Dans une application de bureau vous mettez en oeuvre une programmation événementielle qui est différente de la programmation en mode console.
Exemple avec cette application graphique de bureau : L'interface est graphique et l'utilisateur est maître de l'ordre d'exécution :
C'est l'utilisateur qui choisit à quel moment doit s'exécuter une commande en fonction des objets graphiques qu'il va solliciter.
De plus, l'aspect visuel est nettement plus attractif et intuitif :
Voici les caractéristiques des objets graphiques :
Nom (name) | Type | Autres propriétés |
---|---|---|
txtValeur1 | TextBox | TextAlign : Right |
txtValeur2 | TextBox | (idem txtValeur1) |
txtResultat | TextBox | (idem txtValeur1) |
lblOperation | Label | Font : Size : 16 |
btnAjouter | Button | Font : Size : 20 |
Font : Bold : True | ||
btnMultiplier | Button | (idem btnAjouter) |
btnEffacer | Button | Image : image fournie de la gomme ou image de votre choix redimensionnée |
btsQuitter | Button | (idem btnEffacer avec une autre image) |
En l'état, l'application peut déjà être testée : les boutons ne sont pas encore actifs mais il est déjà possible de saisir des valeurs dans les zones de saisie.
Voici le code de chaque événement :
private void btnEffacer_Click(object sender, EventArgs e) { txtValeur1.Text = ""; txtValeur2.Text = ""; txtResultat.Text = ""; lblOperation.Text = ""; }
private void btnQuitter_Click(object sender, EventArgs e) { Application.Exit(); }
Faire la somme des 2 valeurs saisies (si c'est possible) et la transférer dans txtResultat
private void btnAjouter_Click(object sender, EventArgs e) { try { txtResultat.Text = (float.Parse(txtValeur1.Text) + float.Parse(txtValeur2.Text)).ToString(); lblOperation.Text = "+"; } catch { }; }
Faire la multiplication des 2 valeurs saisies (si c'est possible) et la transférer dans txtResultat.
private void btnMultiplier_Click(object sender, EventArgs e) { try { txtResultat.Text = (float.Parse(txtValeur1.Text) * float.Parse(txtValeur2.Text)).ToString(); lblOperation.Text = "x"; } catch { }; }
private void txtValeur1_TextChanged(object sender, EventArgs e) { txtResultat.Text = ""; lblOperation.Text = ""; }
private void txtValeur2_TextChanged(object sender, EventArgs e) { txtResultat.Text = ""; lblOperation.Text = ""; }
Il est possible de créer des modules non événementiels, comme dans la programmation procédurale classique, pour optimiser le code.
Par exemple, on remarque que le code est identique dans les 2 foncions événementielles sur le changement de texte dans txtValeur1 et txtValeur2. On peut alors créer un module isolé et l'appeler dans les deux procédures événementielles.
private void AnnuleOperation() { lblOperation.Text = ""; txtResultat.Text = ""; }
private void txtValeur1_TextChanged(object sender, EventArgs e) { AnnuleOperation(); }