Aller au contenu

Windows Forms - Menus, Dialogues et Fichiers

10. Le TextBox (Zone de texte)

Pour l'affichage de contenu textuel important :

Propriétés avancées du TextBox

  • Multiline : Doit être à True pour permettre plusieurs lignes.
  • ScrollBars : Mettre à Both pour avoir des barres de défilement horizontales et verticales.
  • Dock : Mettre à Fill pour que le TextBox occupe tout l'espace restant du formulaire.

11. Le MenuStrip

Le MenuStrip permet d'ajouter une barre de menus en haut de la fenêtre.

Conception d'un menu avec MenuStrip

  • Renommer : Toujours nommer le MenuStrip avec son nom complet (ex: menuStripPrincipal).
  • Mnémoniques (&) : Placer un & devant une lettre dans le texte (ex: &Fichier) pour qu'elle soit soulignée et accessible via Alt + F.
  • Shortcut Keys : Propriété permettant de définir des raccourcis clavier (ex: Ctrl + O pour Ouvrir).

12. Dialogues d'ouverture et d'enregistrement

Les composants OpenFileDialog et SaveFileDialog permettent d'interagir avec le système de fichiers.

Utilisation d'OpenFileDialog

  • Filter : Définit les types de fichiers visibles.
    • Exemple : Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*

13. Lecture de fichier (StreamReader)

Pour lire le contenu d'un fichier et l'afficher dans un TextBox :

private void menuOuvrir_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialogCharger = new OpenFileDialog();
    openFileDialogCharger.Filter = "Fichiers texte (*.txt)|*.txt";

    if (openFileDialogCharger.ShowDialog() == DialogResult.OK)
    {
        // Création manuelle du lecteur
        StreamReader reader = new StreamReader(openFileDialogCharger.FileName);

        // Lecture complète du contenu
        textBoxContenu.Text = reader.ReadToEnd();

        // TRÈS IMPORTANT : On doit fermer le flux manuellement
        reader.Close();
    }
}

14. Écriture de fichier (StreamWriter)

Pour enregistrer le contenu d'un TextBox dans un fichier, on utilise StreamWriter.

Les étapes pour un code propre :

  • AutoFlush : Propriété qui, si elle est à true, force l'écriture sur le disque à chaque fois qu'on utilise Write().
  • Flush() : Méthode qui vide le tampon (buffer) vers le fichier. C'est l'action de "pousser" physiquement les données vers le disque.
  • Close() : Libère le fichier. Si on oublie cette étape, Windows considère que le fichier est encore utilisé et empêchera de le supprimer ou de le renommer (fichier "verrouillé").
private void menuEnregistrer_Click(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialogEnregistrer = new SaveFileDialog();
    saveFileDialogEnregistrer.Filter = "Fichiers texte (*.txt)|*.txt";

    if (saveFileDialogEnregistrer.ShowDialog() == DialogResult.OK)
    {
        // Création du flux d'écriture
        StreamWriter writer = new StreamWriter(saveFileDialogEnregistrer.FileName);

        // Optionnel : force l'écriture immédiate après chaque modification
        writer.AutoFlush = true; 

        // Écriture du contenu du TextBox
        writer.Write(textBoxContenu.Text);

        // Pour un code propre, on vide et on ferme TOUJOURS
        writer.Flush();
        writer.Close();
    }
}

15. ColorDialog (Changer la couleur)

Le ColorDialog permet à l'utilisateur de choisir une couleur.

private void menuCouleur_Click(object sender, EventArgs e)
{
    ColorDialog colorDialogSelection = new ColorDialog();

    if (colorDialogSelection.ShowDialog() == DialogResult.OK)
    {
        // On change la couleur de fond du formulaire
        this.BackColor = colorDialogSelection.Color;
    }
}