Les développeurs d'applications Windows ont depuis
longtemps dû choisir entre deux possibilités
: utiliser VisualBasic, qui permet de créer très
simplement des interfaces suffisamment complexes pour les
applications de tous les jours, ou passer par Visual C/C++,
qui avec les MFC (Microsoft Foundation Classes) autorise l'application
à utiliser une interface plus complexe.
L'idéal serait bien sûr de pouvoir obtenir le même résultat en passant par la simplicité d'usage
de VB, le tout sans être lié à
un langage particulier. Les Windows Forms tentent de répondre
à cette attente.
De
quoi s'agit-il
Les Windows Forms, ou WinForms, font partie d'un espace de
nom spécifique de .NET, System.Windows.Forms,
que l'on pourrait comparer à la combinaison des 'espaces
System.Web.UI.WebControls
et System.Web.UI.HtmlControls
: un ensemble d'éléments
graphiques standards pouvant être réutilisés
au sein de l'application. La comparaison s'arrête là
: bien que WinForms et WebForms disposent d'éléments
du même nom (Button,
CheckBox), l'un est destiné
au développement d'applications Windows, l'autre aux
applications ASP.NET, et on ne peut en aucun cas utiliser
l'un de l'autre pour programmer au sein de l'environnement.
Ces éléments ont été conçus
pour utiliser au mieux l'architecture de Windows : une fois
compilés, ils fonctionneront aussi rapidement que s'il
s'agissait de code natif.
Exemple
Le code le plus simple pour obtenir une fenêtre (vide)
se présente comme ceci :
using System.Windows.Forms;
public class FenetreSimple : Form
{
public FenetreSimple()
{
}
public static void Main()
{
Application.Run(new FenetreSimple());
}
}
Notre application doit être définie comme une
classe dérivant de la classe Form.
A la différence de Java, il n'est pas nécessaire
que le fichier porte le même nom que la classe principale.
Ceci fait, il faut définir le point d'entrée
de l'application : Main().
On y lance l'affichage de notre fenêtre via la classe
Application (System.Windows.Forms.Application)
et sa méthode Run.
Finalement, il faut indiquer au compilateur que l'on souhaite
obtenir une application Windows : csc
/t:winexe FenetreSimple.cs .
La simplicité est probante. Voyez cette évolution :
using System;
using System.Windows.Forms;
public class FenetreSimple : Form
{
Button btnClic;
public FenetreSimple()
{
this.Text = "Sapristi!";
btnClic = new Button();
btnClic.Text = "Petit clic ?";
btnClic.Left = 25;
btnClic.Top = 25;
btnClic.Click = new EventHandler(Clic);
Controls.Add(btnClic);
MainMenu leMenu = new MainMenu();
this.Menu = leMenu;
MenuItem menuFichier = leMenu.MenuItems.Add("&Fichier");
menuFichier.MenuItems.Add(new MenuItem("&A
propos...", new EventHandler(this.Apropos_Clicked)));
menuFichier.MenuItems.Add("-");
menuFichier.MenuItems.Add(new MenuItem("Fermer",
new EventHandler(this.Fermer_Clicked)));
}
private void Clic(object sender, EventArgs e)
{
MessageBox.Show("Bravo, vous avez
cliqué!", "Ch'est chuper!");
}
private void Fermer_Clicked(object sender, System.EventArgs
e)
{
this.Close();
}
private void Apropos_Clicked(object sender, System.EventArgs
e)
{
MessageBox.Show("Que de comportements!");
}
public static void Main()
{
Application.Run(new FenetreSimple());
}
}
Beaucoup de changements : nous avons ajouté un bouton,
un menu Fichier, et nous avons même poussé le
vice jusqu'à déclarer quelques événements.
Compilé, cela nous donnera ceci :
Nous définissons tout d'abord au début
de notre classe FenetreSimple
l'élément btnClic.
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Après avoir défini le titre de la fenêtre
avec this.Text, nous déclarons
notre bouton et ses caractéristiques. Il est enfin
attaché à l'évènement Clic
et ajouté à la fenêtre.
Ensuite, nous déclarons le menu et son élément
Fichier, qui contiendra trois éléments : "A
propos", une barre de séparation et "Fermer".
Le premier et le dernier de ces éléments sont
liés aux événements Apropos_Clicked
et Fermer_Clicked.
Nous définissons enfin les trois événements
sus-cités, notamment en utilisant MessageBox.Show
qui nous affiche une fenêtre d'alerte système.
Seule la première dispose d'un titre.
|