Programmation C sharp/Interfaces graphiques
Les applications de la plateforme .Net construisent leur interface graphique à partir de forms.
Espaces de nom
[modifier | modifier le wikicode]Les 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
[modifier | modifier le wikicode]Si 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
[modifier | modifier le wikicode]La 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
[modifier | modifier le wikicode]Un é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
[modifier | modifier le wikicode]Tous 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
[modifier | modifier le wikicode]La 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, ...).