Code - Financial Independence

Visual Basic/C# – Les Windows Forms plus en détails (Partie 2)

Dans ce tutoriel, nous irons plus en détails à propos des Windows Forms. Plus précisément, nous apprendrons comment aller chercher des données d’un utilisateur et les stocker en mémoire par la suite. Les contrôles utilisés seront les suivants :
TextBox
RichTextBox
ComboBox
Button

Vous remarquerez que plus vous utiliserez les contrôles de Windows Forms et plus vous arriverez à identifier des similitudes entre ces derniers. Faites simplement saisir et glisser (drag and drop) le contrôle de votre choix sur le formulaire principal de votre projet pour tenter de le faire ressembler à l’exemple ci-dessous.

Modifiez les contrôles que vous avez ajoutés de la façon suivante :
1. Renommer les contrôles du formulaire avec des noms significatifs, par exemple btnAddUser pour le bouton d’ajout.
2. Changer la propriété DropDownStyle du ComboBox pour DropDownList.
3. Ajouter Homme et Femme au ComboBox (regardez pour la propriété Items).

ComboBox Collection

La prochaine étape sera de prendre les données de l’utilisateur au moment où celui-ci cliquera sur le bouton et de les mettre en mémoire. Nous aurons donc besoin d’un objet pour stocker ces données. Nous le ferons simplement correspondre aux différents champs.

Voici comment j’ai implémenté cet objet, vous pouvez le modifier selon vos goûts et si vous désirez demander plus d’information à l’utilisateur.

Visual Basic

Public Class Client
    Public Property FullName As String
    Public Property Gender As String
    Public Property Address As String
    Public Property Details As String

    Public Sub New(FullName As String,
                   Gender As String,
                   Address As String,
                   Details As String)
        Me.FullName = FullName
        Me.Gender = Gender
        Me.Address = Address
        Me.Details = Details
    End Sub
End Class

C#

namespace FormsControls
{
    class Client
    {
        public string FullName { get; set; }
        public string Gender { get; set; }
        public string Address { get; set; }
        public string Details { get; set; }

        public Client(string FullName,
                      string Gender,
                      string Address,
                      string Details)
        {
            this.FullName   = FullName;
            this.Gender     = Gender;
            this.Address    = Address;
            this.Details    = Details;
        }
    }
}

Form Client

Je vour recommande très fortement de modifier au minimum le nom des contrôles que vous comptez utiliser dans votre code, ceci vous simplifiera la tâche pour les retrouver une fois que vous travaillerez en arrière-plan.

Encore un autre exemple pour un nom serait : tbFirstName, tbLastName, et autre.

Vous pouvez modifier certaines autres propriétés sur le formulaire comme la longueur du texte maximale acceptée dans le boîtes de texte. Toutefois, je m’arrête maintenant pour ce qui est de l’interface.

Dans le code, la première étape sera de valider les entrées de l’utilisateur, rappelez-vous toujours que vous ne pouvez pas lui faire confiance et que vous devez vérifier ses entrées pour vous assurer qu’elles sont conformes à ce à quoi vous vous attendez.

Il y a plusieurs façons d’effectuer la validation selon jusqu’où on souhaite aller. Dans le cas présent, je validerai seulement si l’utilisateur a entré une valeur dans chacune des TextBoxes/ComboBoxesThere. Double cliquez sur le bouton pour accéder à son événement par défaut dans le code.

Visual Basic

Public Class frmClients
    Private Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click
        If txtFullName.Text = String.Empty Or
           txtAddress.Text = String.Empty Or
           cbGender.Text = String.Empty Or
           rtbDetails.Text = String.Empty Then
            MessageBox.Show("")
            Return
        End If

        'Standard process goes here
    End Sub
End Class

C#

        private void btnAddUser_Click(object sender, EventArgs e)
        {
            if (txtFullName.Text == String.Empty ||
                txtAddress.Text == String.Empty ||
                cbGender.Text == String.Empty ||
                rtbDetails.Text == String.Empty)
            {
                MessageBox.Show("All fields must be filled.");
                return;
            }

            //Processus standard
        }

Note : gardez en tête que si vous copiez et collez ce code, vous devrez probablement entrer le nom de l’événement manuellement dans la section Events de la fenêtre Properties

Dans le code ci-dessus, je valide simplement les entrées de l’utilisateur avec un if pour ensuite lui renvoyer un message d’erreur et sortir de la méthode si une erreur s’est produite. Dans tout autre cas le code continuera son chemin vers le commentaire. Cet avertissement donnera la chance à l’utilisateur de corriger les données entrées.

Toujours dans la même méthode, nous allons créer un objet de type Client en mémoire et y mettre l’information entrée par notre utilisateur.

Visual Basic

Public Class frmClients
    Private Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click
        If txtFullName.Text = String.Empty Or
           txtAddress.Text = String.Empty Or
           cbGender.Text = String.Empty Or
           rtbDetails.Text = String.Empty Then
            MessageBox.Show("")
            Return
        End If

        Dim FullName As String
        Dim Address As String
        Dim Gender As String
        Dim Details As String

        FullName = txtFullName.Text
        Address = txtAddress.Text
        Gender = cbGender.Text
        Details = rtbDetails.Text

        Dim NewClient As New Client(FullName,
                                    Gender,
                                    Address,
                                    Details)
    End Sub
End Class

C#

    public partial class frmUsers : Form
    {
        public frmUsers()
        {
            InitializeComponent();
        }

        private void btnAddUser_Click(object sender, EventArgs e)
        {
            if (txtFullName.Text == String.Empty ||
                txtAddress.Text == String.Empty ||
                cbGender.Text == String.Empty ||
                rtbDetails.Text == String.Empty)
            {
                MessageBox.Show("All fields must be filled.");
                return;
            }

            //Standard process goes here
            string FullName     = txtFullName.Text;
            string Address      = txtAddress.Text;
            string Gender       = cbGender.Text;
            string Details      = rtbDetails.Text;

            Client NewClient = new Client(FullName, Address, Gender, Details);

            MessageBox.Show(NewClient.ToString());
        }
    }

Je tiens à vous faire remarquer que j’utilise des variables pour stocker le contenu des TextBoxes avant de créer mon objet. Il n’est pas obligatoire d’effectuer la tâche de cette façon, vous pourriez simplement écrire Client NewClient = new Client(txtFullName.Text, txtAddress.Text, cbGender.Text, rtbDetails.Text);. La seule raison qui me pousse à déclarer des variables est la lisibilité et que je souhaite séparer au maximum l’interface de la logique.

À la dernière ligne, j’utilise la méthode ToString() de l’objet Client pour l’écrire de telle sorte que l’utilisateur puisse avoir une présentation adéquate dans le Message Box. De base, une classe contient toujours une méthode ToString(), mais pour modifier la façon dont elle agit, nous devons l’override, c’est à dire écraser celle de la classe maître Object.

Visual Basic

Public Class Client
    Public Property FullName As String
    Public Property Gender As String
    Public Property Address As String
    Public Property Details As String

    Public Sub New(FullName As String,
                   Gender As String,
                   Address As String,
                   Details As String)
        Me.FullName = FullName
        Me.Gender = Gender
        Me.Address = Address
        Me.Details = Details
    End Sub

    Public Overrides Function ToString() As String
        Dim OutputString As String
        OutputString = String.Format("Client added \nFull name: {0} \nGender: {1} \nAddress: {2} \nDetails: {3}", FullName, Gender, Address, Details)

        Return OutputString
    End Function
End Class


C#

namespace FormsControls
{
    class Client
    {
        public string FullName { get; set; }
        public string Gender { get; set; }
        public string Address { get; set; }
        public string Details { get; set; }

        public Client(string FullName,
                      string Gender,
                      string Address,
                      string Details)
        {
            this.FullName   = FullName;
            this.Gender     = Gender;
            this.Address    = Address;
            this.Details    = Details;
        }

        public override string ToString()
        {
            string OutputString = String.Empty;
            OutputString = String.Format("Client added \nFull name: {0} \nGender: {1} \nAddress: {2} \nDetails: {3}", FullName, Gender, Address, Details);

            return OutputString;
        }
    }
}

Portez une attention particulière au mot-clé override (Overrides en Visual Basic). Cet ajout indique que nous voulons écraser la version du parent (dans notre cas: Object) de la méthode ToString(). “\n” revient comme nous l’avons vu dans d’autres tutoriels, il sert à faire un saut de ligne dans la console ou autre.

Vous pouvez maintenant tester votre programme et n’entrer aucune valeur dans un ou plusieurs des champs pour voir ce qui arrivera. Encore une fois, les breakpoints peuvent être très utiles si vous n’êtes pas certain de ce que l’ordinateur fait à un moment ou à un autre!

Dans le prochain tutoriel nous continuerons à explorer d’autres exemples avec les Windows Forms.

Visual Basic

C#

Next article Design d'applications - Applications multisolutions
Previous article Visual Studio - Changement du thème de l'interface

Related posts

0 Comments

No Comments Yet!

You can be first to comment this post!

Leave a Comment

*