Logs
Consultez les logs.
OK
Liste des données
Consultez la liste des données.
OK
Loading...
Formulaire
Saisissez vos données.
Enregistrer
Annuler

Apprendre C#

Vues
185

Introduction


C# est un langage de programmation orientée objet.

image.png


### Travailler avec Application console


Application console (.NET Framework) est un gestionnaire d'applications en ligne de commande en C# sous Visual Studio.


Créer un projet


// Visual Studio (Créer le projet Application console)
...
# Ouvrir le menu nouveau projet
Fichier > Nouveau > Projet
# Sélectionner le type de projet
Tous les langages > C#
Toutes les plateformes > Windows
Tous les types de projet > Console
Application console (.NET Framework)
Suivant
# Définir le nom du projet
Nom du projet > [nom-projet]
Emplacement > [emplacement-projet]
Suivant
# Sélectionner le framework .NET
Infrastructure > .NET Framework 4.8
# Créer le projet
Créer
...

// Visual Studio (Modifier le nom d'un projet)
...
# Renommer le projet
[nom-projet] > Clic droit > Renommer > [nom-projet-new]
...
# Modifier le nom de l'assembly
# Ouvrir les propriétés du projet
Projet > Propriétés du projet
# Modifier le nom du projet
Application > Nom de l'assembly > [nom-projet-new]
# Enregistrer les propriétés du projet
Touche (Ctrl + S)
...
# Modifier les espaces de noms dans les codes sources
Program.cs > namespace [nom-projet] > namespace [nom-projet-new]
...
# Ou tout simplement
# Créer un nouveau projet avec le nom de projet souhaité
# Pour ne pas avoir à réaliser des modifications un peu partout
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Bonjour tout le monde.");
        }
    }
}
...

// Visual Studio (Exécuter le code sans fermer automatiquement la console)
...
# Exécuter le code sans débogage
Déboguer > Exécuter sans débogage
...

// Visual Studio (Exécuter le code et fermer automatiquement la console)
...
# Exécuter le code avec débogage
Déboguer > Démarrer le débogueur
...

image.png


Créer une classe


// Visual Studio (Créer une classe)
...
# Ouvrir le menu de création de classe
[nom-projet] > Clic droit > Ajouter > Classe
# Créer la classe
Elements C# > Code > Classe
Ajouter
...

// Visual Studio (Renommer une classe)
...
# Renommer la classe
[nom-projet] > Class1.cs > Clic droit > Renommer > cClass.cs
...

// Visual Studio (Formater le code source)
...
# Formater le code source
Touche (Ctrl + K + D)
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            cClass oClass = new cClass();
            oClass.run();
        }
    }
}
...

// cClass.cs (Gestion de la classe)
...
namespace rdv_csharp
{
    internal class cClass
    {
        public cClass()
        {
            Console.WriteLine("Constructeur...: cClass()");

        }

        ~cClass()
        {
            Console.WriteLine("Destructeur...: ~cClass()");
        }

        public void run()
        {
            Console.WriteLine("Méthode...: cClass.run()");
        }
    }
}
...

image.png

Notes :

Le destructeur de la classe en C# ne peut pas être appelé directement à partir du code. Il est appelé implicitement par le Common Language Runtime (CLR) lorsque le Garbage Collector (GC) récupère l'objet.


Passer un argument par référence


// MainWindow.cs (Programme principal)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            String oRef = "Bonjour ";
            String oOut = "Bonjour ";
            cClass oClass = new cClass();
            oClass.run(ref oRef, out oOut);
            Console.WriteLine("oRef : {0}", oRef);
            Console.WriteLine("oOut : {0}", oOut);
        }
    }
}
...

// cClass.cs (Gestion du passage d'argument par référence)
...
namespace rdv_csharp
{
    internal class cClass
    {
        public cClass()
        {
        }

        public void run(ref String _ref, out String _out)
        {
            _ref += "REF";
            _out = "Bonjour OUT";
        }
    }
}
...

image.png

Une variable passer en argument par référence avec l'instruction (ref) est accessible en lecture et en écriture à l'intérieur de la méthode appelante.
Une variable passer en argument par référence avec l'instruction (out) est accessible uniquement en écriture à l'intérieur de la méthode appelante. Et elle doit être obligatoirement initialisée à l'intérieure de la méthode appelante.


Capturer une exception


// MainWindow.cs (Programme principal)
...
namespace rdv_csharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                int[] oNumbers = { 1, 2, 3 };
                Console.WriteLine(oNumbers[10]);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Erreur lors de l'accès au tableau.
                |error ={0}", ex.Message);
            }
        }
    }
}
...

image.png

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                int oNumber1 = 3000;
                int oNumber2 = 0;
                Console.WriteLine(oNumber1 / oNumber2);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Erreur lors de la division par 0.
                |error ={0} ", ex.Message);
            }
        }
    }
}
...

image.png


Lever une exception


// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Boolean isSqlConnectionError = true;

                if (isSqlConnectionError)
                {
                    throw new InvalidOperationException("Le gestionnaire de 
                    la base de données est invalide.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Erreur lors de la connexion au serveur de 
                données.|error={0}", ex.Message);
            }
        }
    }
}
...

image.png


Gérer un manifeste


Un manifeste est un gestionnaire de configuration pour les projets C#.
Un certificat est un gestionnaire d'autorisation pour les projet C#.

Résoudre le problème Impossible de trouver le certificat de signature du manifeste dans le magasin de certificats (Unable to find manifest signing certificate in the certificate store.)

// Visual Studio (Résoudre le problème de certificat non trouvé)
...
# Ouvrir les propriétés du projet
Projet > Propriétés du projet
# Désactiver la signature en une seule fois
Signature > Décocher > Signer les manifestes ClickOnce
...
# Construire la solution
Générer > Générer la solution
# Exécuter le projet
Déboguer > Démarrer avec le débogueur
...

image.png


### Travailler avec SqlConnection


SqlConnection est un fournisseur de connexion à une base de données SQL Server en C#.


Se connecter à une base de données


SQL Server Management Studio (SSMS) est un outil de gestion de bases de données SQL Server.

// Windows (Ouvrir l'outil SQL Server Management Studio)
...
# Démarrer SQL Server Management Studio (en mode administrateur)
Bouton Windows > Ouvrir l'outil SQL Server Management Studio 20 > Clic droit 
> Exécuter en tant qu'administrateur > Oui
# Démarrer la connexion à SQL Server
Type de seveur > Moteur de base de données
Nom du serveur > [nom-serveur]
Authentification > Authentification Windows
Chiffrement > Obligatoire
Cocher > Certificat de serveur de confiance
Connexion
...

// SSMS (Charger un fichier de données MDF)
...
# Ouvrir le menu Attacher des bases de données
[nom-serveur] > Base de données > Clic droit > Joindre
# Charger le fichier de données MDF
Ajouter > [nom-base-donnees.mdf] > OK
OK
...

// SSMS (Renommer une base de données)
...
# Renommer la base de données
[nom-serveur] > Base de données > [nom-base-donnees] > Clic droit > Renommer
[nom-base-donnees-new] > Touche (Entrée)
...

image.png

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            cSqlConnection oCon = null;
            cSqlConnectionOpen oOpenConn = new cSqlConnectionOpen(@"data source=<nom-serveur>;initial catalog=<nom-base-donnees>;trusted_connection=true");

            if (oOpenConn.run(ref oCon))
            {
                return;
            }
        }
    }
}
...

// cSqlConnectionOpen.cs (Gestion de la connexion à la base de données)
...
namespace rdv_csharp
{
    internal class cSqlConnectionOpen
    {
        String m_oConString;

        public cSqlConnectionOpen(String _oConString)
        {
            m_oConString = _oConString;
        }

        public Boolean run(ref cSqlConnection _oCon)
        {
            SqlConnection oCon = new SqlConnection(m_oConString);
            try
            {
                oCon.Open();
                _oCon = new cSqlConnection(oCon);
                Console.WriteLine("La connexion au serveur de données a réussi.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Erreur lors de la connexion au serveur de données." +
                    "|conString={0}"+
                    "|error={1}", m_oConString, ex.Message);
                return false;
            }
            return true;
        }
    }
}
...

// cSqlConnection.cs (Gestion de la base de données)
...
namespace rdv_csharp
{
    internal class cSqlConnection
    {
        SqlConnection m_oCon;
        public cSqlConnection(SqlConnection _oCon)
        {
            m_oCon = _oCon;
        }

        public Boolean run()
        {
            return true;
        }
    }
}
...

image.png


### Travailler avec Application Windows Forms


Application Windows Forms (.NET Framework) est un gestionnaire d'interfaces graphiques en C# sous Visual Studio. 


Créer un projet


// Visual Studio (Créer le projet Application Windows Forms)
...
# Ouvrir le menu nouveau projet
Fichier > Nouveau > Projet
# Sélectionner le type de projet
Tous les langages > C#
Toutes les plateformes > Windows
Tous les types de projet > Bureau
Application Windows Forms (.NET Framework)
Suivant
# Définir le nom du projet
Nom du projet > [nom-projet]
Emplacement > [emplacement-projet]
Suivant
# Sélectionner le framework .NET
Infrastructure > .NET Framework 4.8
# Créer le projet
Créer
...

// Visual Studio (Ouvrir le code source du programme)
...
# Ouvrir le code source
[nom-projet] > Program.cs > Clic droit > Ouvrir
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
...

// Visual Studio (Ouvrir le designer du formulaire)
...
# Méthode 1
# Ouvrir le designer
[nom-projet] > Form1.cs > Clic droit > Ouvrir
...
# Méthode 2
# Ouvrir le designer
[nom-projet] > Form1.cs > Clic droit > Concepteur de vues
...
# Méthode 3
# Ouvrir le designer
Si vous êtes sur le code source
Basculer vers le designer > Touche (MAJ + F7)
...

image.png

// Visual Studio (Ouvrir le code source du formulaire)
...
# Méthode 1
# Ouvrir le code source
[nom-projet] > Form1.cs > Clic droit > Afficher le code source
...
# Méthode 2
# Ouvrir le code source
Si vous êtes sur le designer
Basculer sur le code source > Touche (F7)
...

// Form1.cs (Gestion du formulaire)
...
namespace rdv_csharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}
...

// Visual Studio (Désactiver la console)
...
# Ouvrir les propriétés du projet
Projet > Propriétés [nom-projet]
# Désactiver la console
Type de sortie > Application Windows
...

// Visual Studio (Fermer automatiquement la console)
...
# Ouvrir les options de débogage
Outils > Options > Débogage
# Fermer automatiquement la console
Cocher > Fermer automatiquement la console à l'arrêt du débogage
OK
...

// Visual Studio (Exécuter le projet)
...
# Exécuter le projet
Déboguer > Démarrer le débogage
...

image.png


Modifier le titre du formulaire


// Visual Studio (Renommer un formulaire)
...
# Renommer le formulaire
[nom-projet] > Form1.cs > Clic droit > Renommer > MainWindow.cs
...

// Visual Studio (Modifier le titre du formulaire)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés du formulaire
Form > Prop > Name > MainWindow
Form > Prop > Text > MainWindow
...

// Visual Studio (Modifier les évènements du formulaire)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
MainWindow.cs > Clic droit > Propriétés > Evènements
# Modifier les propriétés du formulaire
Form > Prop > Name > MainWindow
Form > Event > FormClosed > MainWindow_FormClose
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainWindow());
        }
    }
}
...

// MainWindow.cs (Gestion du formulaire)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }
    }
}
...

image.png


Centrer un formulaire


// Visual Studio (Centrer un formulaire)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Centrer un formulaire
Form > Prop > Name > MainWindow
Form > Prop > StartPosition > CenterScreen
...

image.png


Gérer une couleur de fond


// Visual Studio (Ajouter un panneau)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter le panneau
Boîte à outils > Rechercher > Panel > MainWindow.cs
...

// Visual Studio (Modifier les propriétés du panneau)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du panneau
Panel > Clic droit > Propriétés > Propriétés
# Modifier les propriétés du panneau
Panel > Prop > Name > pnlBackground
Panel > Prop > BackColor > DarkSlateGray
Panel > Prop > Dock > Top
# Modifier les dimensions du panneau
Panel > Cliquer sur le bord bas > Etirer la hauteur vers le bas 
...

image.png


Gérer un bouton


// Visual Studio (Ajouter un bouton)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter le bouton
Boîte à outils > Rechercher > Button > MainWindow.cs
...

// Visual Studio (Modifier les propriétés du bouton)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés du bouton
Button > Prop > Name > btnRun
Button > Prop > Text > Run
Button > Prop > FlatStyle > Flat
Button > Prop > ForeColor > White
Button > Prop > Cursor > Hand
Button > Prop > Font > Name > Segoe UI
Button > Prop > Font > Size > 10
Button > Prop > Font > Bold > True
# Modifier les dimensions du bouton
Button > Cliquer sur le bord bas > Etirer la hauteur vers le bas 
Button > Cliquer sur le bord droit > Etirer la largeur vers la droite
...

// Visual Studio (Modifier les évènements du bouton)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les évènements du formulaire
MainWindow.cs > Clic droit > Propriétés > Evènements
# Modifier les évènements du bouton
Button > Prop > Name > btnRun
Button > Event > Click > btnRun_Click
...

// Visual Studio (Activer la console)
...
# Ouvrir les propriétés du projet
Projet > Propriétés [nom-projet]
# Activer la console
Type de sortie > Application console
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainWindow());
        }
    }
}
...

// MainWindow.cs (Gestion du bouton)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("btnRun_Click...");
        }
    }
}
...

image.png

image.png


Gérer un label


// Visual Studio (Ajouter un label)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter les labels
Boîte à outils > Rechercher > Label > MainWindow.cs
Boîte à outils > Rechercher > Label > MainWindow.cs
...

// Visual Studio (Modifier les propriétés des labels)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés du label (1)
Label > Prop > Name > lblTitle
Label > Prop > Text > MainWindow
Label > Prop > ForeColor > White
Label > Prop > Font > Name > Microsoft Sans Serif
Label > Prop > Font > Size > 16
Label > Prop > Font > Bold > True
# Modifier les propriétés du label (2)
Label > Prop > Name > lblAuthor
Label > Prop > Text > Developed by ReadyTeam
Label > Prop > ForeColor > White
Label > Prop > Font > Name > Papyrus
Label > Prop > Font > Size > 12
Label > Prop > Font > Bold > True
Label > Prop > Font > Italic > True
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainWindow());
        }
    }
}
...

// MainWindow.cs (Gestion du bouton)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("lblTitle : " + lblTitle.Text);
            Console.WriteLine("lblAuthor : " + lblAuthor.Text);
        }
    }
}
...

image.png

image.png


Gérer un timer


// Visual Studio (Ajouter un timer)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter le timer
Boîte à outils > Rechercher > Timer > MainWindow.cs
...

// Visual Studio (Modifier les propriétés du timer)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés du timer
Timer > Prop > Name > tmrCounter
Timer > Prop > Interval > 500
...

// Visual Studio (Modifier les évènements du timer)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les évènements du formulaire
MainWindow.cs > Clic droit > Propriétés > Evènements
# Modifier les évènements du timer
Timer > Prop > Name > tmrCounter
Timer > Event > Tick > tmrCounter_Tick
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainWindow());
        }
    }
}
...

// MainWindow.cs (Gestion du timer)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        private int m_tmrCounter = 0;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            tmrCounter.Enabled = !tmrCounter.Enabled;
            if (!tmrCounter.Enabled)
            {
                m_tmrCounter = 0;
            }
        }

        private void tmrCounter_Tick(object sender, EventArgs e)
        {
            m_tmrCounter++;
            Console.WriteLine("tmrCounter_Tick...: {0} ms", m_tmrCounter * tmrCounter.Interval);
        }
    }
}
...

image.png

image.png


Gérer un splashscreen


// Visual Studio (Dupliquer un formulaire)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Copier le formulaire
[nom-projet] > MainWindow.cs > Touche (Ctrl + C) > Pour copier
# Coller le formulaire
[nom-projet] > Touche (Ctrl + V) > Pour coller > MainWindow-Copier.cs
# Renommer le formulaire
[nom-projet] > MainWindow.cs > Clic droit > Renommer > cSplashScreen.cs
# Ne pas enregistrer le formulaire
MainWindow.cs [Conception] > Fermer > Ne pas enregistrer
# Renommer la copie du formulaire
[nom-projet] > MainWindow-Copier.cs > Clic droit > Renommer > MainWindow.cs
...

// Visual Studio (Modifier les propriétés du splashscreen)
...
# Ouvrir le designer
[nom-projet] > cSplashScreen.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du splashscreen
cSplashScreen.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés du splashscreen
Form > Prop > Name > cSplashScreen
Form > Prop > FormBorderStyle > None
...

// Visual Studio (Modifier les propriétés du timer)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés du timer
Timer > Prop > Name > tmrCounter
Timer > Prop > Enabled > True
Timer > Prop > Interval > 500
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new cSplashScreen());
        }
    }
}
...

// cSplashScreen.cs (Gestion du splashscreen)
...
namespace rdv_csharp
{
    public partial class cSplashScreen : Form
    {
        private int m_tmrCount = 0;

        public cSplashScreen()
        {
            InitializeComponent();
        }

        private void tmrCounter_Tick(object sender, EventArgs e)
        {
            if (++m_tmrCount >= 5)
            {
                m_tmrCount = 0;
                tmrCounter.Stop();
                MainWindow oWindow = new MainWindow();
                oWindow.Show();
                this.Hide();
            }
        }
    }
}
...

// MainWindow.cs (Gestion du formulaire)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        private int m_tmrCounter = 0;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("btnRun_Click...");
        }
    }
}
...

image.png

image.png

image.png


Gérer une boîte de dialogue


// MainWindow.cs (Gestion de la boîte de dialogue)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        private int m_tmrCounter = 0;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Bonjour tout le monde...");
        }
    }
}
...

image.png


Gérer une zone de liste déroulante


// Visual Studio (Ajouter une zone de liste déroulante)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter la zone de liste déroulante
Boîte à outils > Rechercher > ComboBox > MainWindow.cs
...

// Visual Studio (Dupliquer un composant graphique)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Copier le composant
bntRun > Touche (Ctrl + C)
# Coller le composant
Touche (Ctrl + V) > btnClear
...

// Visual Studio (Aligner des composants graphiques)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Sélectionner le groupe de composants
Cliquer + Glisser > Encadrer les composants > Pour les sélectionner
# Aligner les composants
# Se servir de outils d'alignement
Outil > Aligner les côtés gauches
Outil > Aligner les centres
Outil > Aligner les milieux
Outil > ...
...

image.png

image.png

// MainWindow.cs (Gestion de la zone de liste déroulante)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        private int m_cmbCount;
        private int m_cmbSelect;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender,
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void MainWindow_Load(object sender, EventArgs e)
        {
            btnClear_Click(sender, e);
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("cmbItems.Items.Count...: {0}", 
            cmbItems.Items.Count);
            Console.WriteLine("cmbItems.Text...: {0}", cmbItems.Text);
            Console.WriteLine("cmbItems.SelectedIndex...: {0}", 
            cmbItems.SelectedIndex);
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            cmbItems.Items.Clear();
            cmbItems.Items.Add("Sélectionner un élément...");
            cmbItems.SelectedIndex = 0;
            m_cmbCount = 0;
            m_cmbSelect = 0;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            cmbItems.Items.Add(String.Format("Element {0}", ++m_cmbCount));
            cmbItems.SelectedIndex = cmbItems.Items.Count - 1;
        }

        private void btnSelect_Click(object sender, EventArgs e)
        {
            if (++m_cmbSelect >= cmbItems.Items.Count)
            {
                m_cmbSelect = 1;
            }
            cmbItems.SelectedIndex = m_cmbSelect;
        }

        private void btnRemove_Click(object sender, EventArgs e)
        {
            if(cmbItems.SelectedIndex == 0)
            {
                MessageBox.Show("Aucun élément n'a été sélectionné.");
                return;
            }

            cmbItems.Items.RemoveAt(cmbItems.SelectedIndex);
            cmbItems.SelectedIndex = 0;
        }
    }
}
...

image.png

image.png


Gérer des cases à cocher


// Visual Studio (Ajouter des cases à cocher)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter les cases à cocher
Boîte à outils > Rechercher > CheckBox > MainWindow.cs
Boîte à outils > Rechercher > CheckBox > MainWindow.cs
...

// Visual Studio (Modifier les propriétés des cases à cocher)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés de la case à cocher (1)
CheckBox > Prop > Name > chbChoice1
CheckBox > Prop > Text > Choix 1
CheckBox > Prop > ForeColor > White
CheckBox > Prop > Cursor > Hand
CheckBox > Prop > Font > Name > Microsoft Sans Serif
CheckBox > Prop > Font > Size > 10
CheckBox > Prop > Font > Bold > True
# Modifier les propriétés de la case à cocher (2)
CheckBox > Prop > Name > chbChoice2
CheckBox > Prop > Text > Choix 2
CheckBox > Prop > ForeColor > White
CheckBox > Prop > Cursor > Hand
CheckBox > Prop > Font > Name > Microsoft Sans Serif
CheckBox > Prop > Font > Size > 10
CheckBox > Prop > Font > Bold > True
...

// MainWindow.cs (Gestion des cases à cocher)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender,
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("chbChoice1.Checked...: {0}", 
            chbChoice1.Checked);
            Console.WriteLine("chbChoice2.Checked...: {0}", 
            chbChoice2.Checked);
        }
    }
}
...

image.png

image.png


Gérer des options


// Visual Studio (Ajouter des options)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter les panneaux pour grouper les options identiques
Boîte à outils > Rechercher > Panel > MainWindow.cs
Boîte à outils > Rechercher > Panel > MainWindow.cs
# Ajouter les cases à cocher
Boîte à outils > Rechercher > RadioButton > MainWindow.cs
Boîte à outils > Rechercher > RadioButton > MainWindow.cs
Boîte à outils > Rechercher > RadioButton > MainWindow.cs
Boîte à outils > Rechercher > RadioButton > MainWindow.cs
...

// Visual Studio (Modifier les propriétés des options)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés de l'option (1)
RadioButton > Prop > Name > radYes
RadioButton > Prop > Text > Oui
RadioButton > Prop > ForeColor > White
RadioButton > Prop > Cursor > Hand
RadioButton > Prop > Font > Name > Microsoft Sans Serif
RadioButton > Prop > Font > Size > 10
RadioButton > Prop > Font > Bold > True
# Modifier les propriétés de l'option (2)
RadioButton > Prop > Name > radNo
RadioButton > Prop > Text > Non
RadioButton > Prop > ForeColor > White
RadioButton > Prop > Cursor > Hand
RadioButton > Prop > Font > Name > Microsoft Sans Serif
RadioButton > Prop > Font > Size > 10
RadioButton > Prop > Font > Bold > True
# Modifier les propriétés de l'option (3)
RadioButton > Prop > Name > radTrue
RadioButton > Prop > Text > Vrai
RadioButton > Prop > ForeColor > White
RadioButton > Prop > Cursor > Hand
RadioButton > Prop > Font > Name > Microsoft Sans Serif
RadioButton > Prop > Font > Size > 10
RadioButton > Prop > Font > Bold > True
# Modifier les propriétés de l'option (4)
RadioButton > Prop > Name > radFalse
RadioButton > Prop > Text > Faux
RadioButton > Prop > ForeColor > White
RadioButton > Prop > Cursor > Hand
RadioButton > Prop > Font > Name > Microsoft Sans Serif
RadioButton > Prop > Font > Size > 10
RadioButton > Prop > Font > Bold > True
...

// MainWindow.cs (Gestion des options)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender,
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("radYes.Checked..: {0}", radYes.Checked);
            Console.WriteLine("radNo.Checked...: {0}", radNo.Checked);
            Console.WriteLine("radTrue.Checked..: {0}", radTrue.Checked);
            Console.WriteLine("radFalse.Checked...: {0}", radFalse.Checked);
        }
    }
}
...

image.png

image.png


Gérer une zone de groupe


// Visual Studio (Ajouter une zone de groupe)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter une zone de groupe
Boîte à outils > Rechercher > GroupBox > MainWindow.cs
# Ajouter un label
Boîte à outils > Rechercher > Label > MainWindow.cs
# Ajouter un panneau pour grouper les options identiques
Boîte à outils > Rechercher > Panel > MainWindow.cs
# Ajouter les cases à cocher
Boîte à outils > Rechercher > RadioButton > MainWindow.cs
Boîte à outils > Rechercher > RadioButton > MainWindow.cs
...

// Visual Studio (Modifier les propriétés de la zone de groupe)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés > Propriétés
# Modifier les propriétés de la zone de groupe
GroupBox > Prop > Name > grbSettings
GroupBox > Prop > Text > Paramètres
GroupBox > Prop > ForeColor > White
GroupBox > Prop > Font > Name > Microsoft Sans Serif
GroupBox > Prop > Font > Size > 10
GroupBox > Prop > Font > Bold > True
...

// MainWindow.cs (Gestion de la zone de groupe)
...
namespace rdv_csharp
{
    public partial class MainWindow : Form
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_FormClosed(object sender,
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("radYes.Checked..: {0}", radYes.Checked);
            Console.WriteLine("radNo.Checked...: {0}", radNo.Checked);
        }
    }
}
...

image.png

image.png


### Travailler avec SipaaFramework


SipaaFramework est un fournisseur de composants graphiques pour C#. 


Gérer un bouton


// Visual Studio (Installer le framework SipaaFramework)
...
# Ouvrir le menu de gestion des packages NuGet
Outils > Gestionnaire de package NuGet > Gérer les packages NuGet pour la solution
# Ouvrir le package SipaaFramework
Parcourir > Rechercher > SipaaFramework
Cocher > Projet
Installer > Appliquer
...

// Visual Studio (Ajouter le bouton)
...
# Ouvrir le menu de gestion des packages NuGet
Outils > Gestionnaire de package NuGet > Gérer les packages NuGet pour la solution
# Ouvrir le package SipaaFramework
Parcourir > Rechercher > SipaaFramework
Cocher > Projet
Installer > Appliquer
...

// Visual Studio (Modifier les propriétés du bouton)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés
# Modifier les propriétés du bouton
SButton > Prop > Name > btnRun
SButton > Prop > Text > Run
SButton > Prop > Cursor > Hand
SButton > Prop > Font > Name > Microsoft Sans Serif
SButton > Prop > Font > Size > 10
SButton > Prop > Font > Bold > True
SButton > Event > Click > btnRun_Click
...

// Program.cs (Programme principal)
...
namespace rdv_csharp
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new cSipaaFramework());
        }
    }
}
...

// cSipaaFramework.cs (Gestion du bouton)
...
namespace rdv_csharp
{
    public partial class cSipaaFramework : Form
    {
        public cSipaaFramework()
        {
            InitializeComponent();
        }

        private void cSipaaFramework_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("btnRun_Click...");
        }
    }
}
...

image.png

image.png


Gérer une zone de texte


// Visual Studio (Ajouter une zone de texte)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ajouter la zone de texte
Boîte à outils > Rechercher > STextBox > MainWindow.cs
...

// Visual Studio (Modifier les propriétés de la zone de texte)
...
# Ouvrir le designer
[nom-projet] > MainWindow.cs > Clic droit > Concepteur de vues
# Ouvrir les propriétés du formulaire
MainWindow.cs > Clic droit > Propriétés
# Modifier les propriétés du bouton
STextBox > Prop > Name > edtText
...

// cSipaaFramework.cs (Gestion de la zone de texte)
...
namespace rdv_csharp
{
    public partial class cSipaaFramework : Form
    {
        public cSipaaFramework()
        {
            InitializeComponent();
        }

        private void cSipaaFramework_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            Console.WriteLine("edtText...: {0}", edtText.Texts);
        }
    }
}
...

image.png

image.png


Gérer une zone de texte pour mot de passe


// cSipaaFramework.cs (Gestion de la zone de texte pour mot de passe)
...
namespace rdv_csharp
{
    public partial class cSipaaFramework : Form
    {
        public cSipaaFramework()
        {
            InitializeComponent();
        }

        private void cSipaaFramework_FormClosed(object sender, 
        FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            edtText.PasswordChar = !edtText.PasswordChar;
            Console.WriteLine("edtText...: {0}", edtText.Texts);
        }
    }
}
...

image.png

image.png

image.png