Søg på DotNyt:
Denne blog er flyttet til www.nielsbrinch.com


søndag den 24. juni 2007

OneOnOne -- Formularelementer

skrevet af Niels Brinch

Dette indlæg er del af OneOnOne - Et simpelt multiplayer-spil i Silverlight.

Der er ikke inkluderet nogen mulighed for at indsætte formular-elementer i Silverlight. Jeg vil gerne have at folk indtaster deres eget navn inden de får lov at spille, så man ved hvem man spiller imod. Til det har jeg fundet GOA WinForms som er ret nemt at gå til.

Efter du har installeret GOA WinForms er det allernemmest at skabe et nyt projekt og vælge GOA WinForms som skabelon:

image

Men hvis du vil tilføje mulighed for formularer i en eksisterende Silverlight-applikation, kan du gøre sådan:

1. Der hvor du har installeret GOA finder du to filer.

image

2. I dit Silverlight-projekt skal du tilføje en reference til dll-filen.

3. Og tilføj en mappe navngivet "Resources" hvor du kopierer zip-filen ind.

image

4. Indsæt en formular-sektion i Page.xaml og en NameSpace-attribut på dit Canvas.

<Canvas x:Name="parentCanvas"
Name="parentCanvas"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Page_Loaded"
x:Class="OneOnOneClient.Page;assembly=ClientBin/OneOnOneClient.dll"
Width="400"
Height="600"
Background="Green"
xmlns:goa="clr-namespace:NETiKA.Silverlight;assembly=ClientBin/Goa.Windows.Forms.dll"
>
<goa:WinFormHost Width="300"
Height="100"
Canvas.Left="50"
Canvas.Top="250"
FormClass="OneOnOneClient.PlayerNameForm"
/>
</Canvas>

5. Bemærk den attribut der hedder "FormClass". Den skal pege på den klasse som indeholder selve formularen. Der kan du f.eks. copy-paste fra denne fil og tilpasse namespaces, klassenavn og selvfølgelig hvilke formular-elementer du vil benytte.


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace OneOnOneClient
{
public class PlayerNameForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnOk;

private System.ComponentModel.Container components = null;

public PlayerNameForm()
{
InitializeComponent();

//
// TODO: Add constructor logic here
//
}

protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

private void InitializeComponent()
{
this.btnOk = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// btnOk
//
this.btnOk.Location = new System.Drawing.Point(50, 50);
this.btnOk.Text = "OK";

//
// Form1
//
this.Controls.Add(this.btnOk);
this.Text = "Form1";
this.ResumeLayout(false);
}

public static void Main()
{
//
// TODO: Add application logic here
//
Application.Run(new PlayerNameForm());
}
}
}

Du kan nu indsætte formular-elementer fuldstændig som i en Windows-applikation. Uden at have prøvet det, vil jeg tro man kan designe sit vindue med designeren, direkte i en Windows-applikation og så bare copy-paste derfra.

0 kommentarer

0 Kommentarer:

Send en kommentar

<< Tilbage


 
Til forsiden

Niels Brinch