Client Windows utilisant Windows Forms
Tous les exemples précédents sont des programmes de ligne de commande qui écrivent des chaînes dans la console du système. Maintenant que vous avez vu tout le processus de développement, vous allez réécrire votre application cliente pour utiliser la nouvelle bibliothèque Windows Forms, disponible pour tous les langages .NET. L'exemple utilise Visual Basic et voici la liste de code source complète :
Listing 1. Client Windows Forms dans Visual Basic (ClientWinForms.vb)
Option Explicit
Option Strict
Imports System
Imports System.Collections
Imports System.Drawing
Imports System.Threading
Imports System.Windows.Forms
Imports CompCS
Imports CompVB
Imports CompVC
Public Module modmain
Public Const vbCrLf as String =
Microsoft.VisualBasic.ControlChars.CrLf
Public Class Client
Inherits Form
' This code is required by the Windows Forms Designer.
Private components As
System.ComponentModel.Container
Private Button2 As System.Windows.Forms.Button
Private Button1 As System.Windows.Forms.Button
Private Label1 As System.Windows.Forms.Label
Public Sub New()
MyBase.New
InitForm 'Required by the Windows Forms Designer.
End Sub
'Form overrides Dispose(Boolean) to clean up component list
'(this Form has no components), then disposes of the base class
Protected Overloads Overrides Sub Dispose(disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' This is the Main entry point for the application.
Shared Sub Main()
Application.Run(New Client)
End Sub
' This procedure is required by the Windows Forms Designer.
' It can be modified using the Windows Forms Designer.
' Do not modify it using the code editor.
Private Sub InitForm()
Me.Button1 = New Button
Me.Button2 = New Button
Me.Label1 = New Label
Button1.Location = new Point(200, 230)
Button1.TabIndex = 1
Button1.Text = "&Close"
Button1.Size = new Size(75, 23)
AddHandler Button1.Click, New
System.EventHandler(AddressOf
Me.Button1_Click)
Button2.Location = new Point(120, 230)
Button2.TabIndex = 2
Button2.Text = "&Execute"
Button2.Size = new Size(75, 23)
AddHandler Button2.Click, New
System.EventHandler(AddressOf
Me.Button2_Click)
Label1.Location = new Point(8, 8)
Label1.TabIndex = 0
Label1.TabStop = False
Label1.Text = ""
Label1.Size = new Size(272, 232)
Me.Text = "Client"
Me.Controls.Add(Button2)
Me.Controls.Add(Button1)
Me.Controls.Add(Label1)
End Sub
Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Me.Close
End Sub
Private Sub Button2_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs)
' Declare the local variables.
Dim myCompCS As New CompCS.StringComponent
Dim myCompVB As New CompVB.StringComponent
Dim myCompVC As New CompVC.StringComponent
Dim StringCount As Integer
' Clear the label.
Label1.Text = ""
' Display the results from the C# component.
For StringCount = 0 To CInt(myCompCS.Count) - 1
Label1.Text &=
MyCompCS.GetString(StringCount) & vbCrLf
Next
Label1.Text &= vbCrLf
' Display the results from the Visual Basic component.
For StringCount = 0 to CInt(MyCompVB.Count) - 1
Label1.Text &=
myCompVB.GetString(StringCount) & vbCrLf
Next
Label1.Text &= vbCrLf
' Display the results from the Visual C++ component.
For StringCount = 0 To CInt(myCompVC.Count) - 1
Label1.Text &=
myCompVC.GetString(StringCount) & vbCrLf
Next
End Sub
End Class
End Module
Dans le Kit de développement .NET Framework SDK, la bibliothèque Windows Forms se trouve dans l'espace de noms System.Windows.Forms. L'instruction suivante incorpore l'espace de noms System.Windows.Forms dans le programme.
Imports System.Windows.Forms
En important les espaces de noms, vous pouvez vous référer aux types inclus, tels que Button, sans avoir à utiliser le nom de type qualifié complet, tel que System.Windows.Forms.Button.
La ligne de code suivante est intéressante ; elle illustre l'héritage, l'une des fonctionnalités les plus puissantes du Common Language Runtime :
Inherits Form
Avec cette seule instruction, vous spécifiez que la classe du client hérite de toutes les fonctionnalités de la classe Form dans la bibliothèque Windows Forms. L'indépendance de langage est un aspect important du modèle d'héritage du runtime : vous pouvez hériter du runtime, mais également des classes écrites dans n'importe quel langage .NET.
Ensuite, vous déclarez les types d'objet que vous utiliserez dans votre formulaire, comme l'illustre la ligne suivante :
Private Button1 As System.Windows.Forms.Button
Vous êtes maintenant prêt à exécuter du code. Voici le constructeur pour le formulaire Client qui crée une instance de la classe de base et appelle la méthode **InitForm **:
Sub New()
MyBase.New
' InitForm is required by the Windows Forms Designer.
InitForm
End Sub
Voici le point d'entrée pour le programme lui-même qui démarre en créant une nouvelle instance du formulaire Client :
Shared Sub Main()
Application.Run(New Client)
End Sub
La méthode InitForm configure le formulaire et tous ses contrôles. Pour Button1, par exemple, InitForm crée un nouveau bouton à partir du type Button :
Me.Button1 = New Button
Puis, InitForm le déplace, définit sa légende (ou sa propriété Text) et le redimensionne :
Button1.SetLocation(200, 248)
Button1.TabIndex = 1
Button1.Text = "&Close"
Button1.SetSize(75, 23)
Puis vient la partie délicate : connecter Click, qui est simplement l'un des nombreux événements du type Button, à la propre sous-routine de l'exemple :
AddHandler Button1.Click, New
System.EventHandler(AddressOf Me.Button1_Click)
Enfin, InitForm ajoute le bouton à la collection Controls du formulaire :
Me.Controls.Add(Button1)
Le code suivant met en valeur le gestionnaire d'événements qui s'exécute lorsque l'utilisateur clique sur **Button1 **:
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Me.Close
End Sub
En fait, la seule chose qui se produit ici est l'appel de la méthode Close du formulaire, fermant ainsi l'application. Cette sous-routine particulière ignore les arguments.
L'élément essentiel du programme se trouve dans le gestionnaire d'événements Button2_Click, qui utilise le même code que celui de l'exemple du client Visual Basic. Au lieu d'écrire dans la console, toutefois, l'exemple de Windows Forms ajoute le code à la propriété Text de l'étiquette sur le formulaire :
Label1.Text &=
myCompVC.GetString(StringCount) & vbCrLf
Le processus de création est réellement plus complexe. Vous devez non seulement spécifier les composants que vous avez déjà créés mais également référencer tous les assemblys requis par Windows Forms :
vbc.exe /t:winexe /debug+ /optionstrict+
/reference:..\Bin\CompCS.dll
/reference:..\Bin\CompVB.dll
/reference:..\Bin\CompVC.dll
/reference:System.dll,
System.Windows.Forms.dll,
System.Data.DLL,system.drawing.dll
/out:..\bin\ClientWinForms.exe ClientWinForms.vb
L'exécution de l'application crée la boîte de dialogue suivante. Lorsque vous cliquez sur le bouton Execute, les chaînes sont écrites dans l'étiquette sur le formulaire :
Voir aussi
Client utilisant ASP.NET | Résumé du didacticiel de développement | Annexe A : Outils pour l'exploration des espaces de noms