Programmation C sharp/Interfaces graphiques

Les applications de la plateforme .Net construisent leur interface graphique à partir de forms.

Programmation C#
Programmation C#
Modifier ce modèle

Espaces de nom

modifier

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

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

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

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

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

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, ...).