Programmation C sharp/Interfaces graphiques
Les applications de la plateforme .Net construisent leur interface graphique à partir de forms.
Espaces de nom
modifierLes deux principaux espaces de nom de l'interface graphique sont :
System.Windows.Forms
- Cet espace de nom contient les classes correspondant aux divers composants de l'interface graphique (fenêtre, bouton, label, ...).
System.Drawing
- Cet espace de nom gère le dessin dans un composant (ligne, rectangle, texte, image, ...).
Compilation
modifierSi l'application possédant une interface graphique n'a pas besoin de console, il est possible de la supprimer en spécifiant winexe
pour le paramètre target
dans la ligne de commande du compilateur :
Windows | csc /t:winexe fichier.cs
|
Linux (Mono) | gmsc -target:winexe fichier.cs
|
Une première fenêtre
modifierLa fenêtre est gérée par la classe Form
de l'espace de nom System.Windows.Forms
. En général, l'application dérive de cette classe pour ajouter des attributs de type composants, et gérer les évènements.
Cette première fenêtre comportera un label « Hello world ! » et un bouton « Fermer ».
Source :
using System;
using System.Windows.Forms;
using System.Drawing;
public class PremiereFenetre : Form
{
private Label message;
private Button fermer;
public PremiereFenetre()
{
SuspendLayout();
Text = "Une première fenêtre"; // Le titre de la fenêtre
Size = new Size(200, 150); // La taille initiale
MinimumSize = new Size(200, 150); // La taille minimale
// Le label "Hello world !"
message = new Label();
message.Text = "Hello World !";
message.AutoSize = true; // Taille selon le contenu
message.Location = new Point(50, 30);// Position x=50 y=30
// Le bouton "Fermer"
fermer = new Button();
fermer.Text = "Fermer";
fermer.AutoSize = true; // Taille selon le contenu
fermer.Location = new Point(50, 60);// Position x=50 y=60
fermer.Click += new System.EventHandler(fermer_Click);
// Ajouter les composants à la fenêtre
Controls.Add(message);
Controls.Add(fermer);
ResumeLayout(false);
PerformLayout();
}
// Gestionnaire d'événement
private void fermer_Click(object sender, EventArgs evt)
{
// Fin de l'application :
Application.Exit();
}
static void Main()
{
// Pour le style XP :
Application.EnableVisualStyles();
// Lancement de la boucle de messages
// pour la fenêtre passée en argument :
Application.Run(new PremiereFenetre());
}
}
Les propriétés des composants sont initialisées. Puis les composants sont ajoutés à la collection Controls
des composants de la fenêtre.
La gestion de l’événement du clic sur le bouton se fait à l'aide de l'event Click
.
Si la compilation se déroule bien, le lancement de l'application affiche la fenêtre suivante :
Cette fenêtre est redimensionnable, mais ne peut être plus petite que la taille minimale spécifiée dans le fichier source par la propriété MinimumSize
.
L'interface avec un éditeur graphique
modifierUn éditeur graphique permet de créer facilement l'interface graphique grâce à une barre d'outils permettant d'ajouter des composants à la fenêtre de l'application, et de modifier leur propriétés.
Les ressources associées à l'interface graphique sont :
- les icônes, dont celle de l'application affichée dans le coin supérieur gauche de la fenêtre,
- les images,
- les curseurs de souris personnalisés,
- les chaînes de caractères (ressources en plusieurs langues).
Les éditeurs disponibles sont :
- Visual Studio et sa version Express gratuite, le plus diffusé
- SharpDevelop, un éditeur développé par une communauté de passionnés
- MonoDevelop, un éditeur développé par le projet Mono
Les composants
modifierTous les composants ont pour classe de base System.Windows.Forms.Control
. Cette classe définit les fonctionnalités communes à tous les composants.
Les événements
modifierLa gestion des événements est assurée par l'utilisation d'events dont la méthode delegate correspondante a la signature suivante :
void nom_method(object sender, nom_évènementEventArgs e)
Le premier argument indique la source de l'évènement (le contrôle). Le deuxième argument donne des informations sur l'évènement (position de la souris, touche utilisée, ...).