TUTORIEL TECHNOS .NET 
C# : un éditeur de texte avec WinForms
Première partie : lecture et écriture de fichiers avec Windows Forms et C#. (27/09/2004)
    1. Présentation et code | 2. Explications

Après notre présentation des Windows Forms, nous allons écrire une petite application permettant de charger, modifier et sauvegarder un fichier texte. Ce faisant, nous aborderons certaines classes de gestion de fichiers dont l'usage est courant dans les applications graphiques.

Présentation
Notre éditeur est des plus simples : une zone où taper son texte, un menu "Fichier" contenant les options "Ouvrir...", "Enregistrer sous..." et "Fermer", et un menu Info affichant une boite de dialogue via l'option "A propos". Notre champ texte est fixe : nous n'avons pas pris soin de le faire s'agrandir en fonction de la taille de la fenêtre. De même, la gestion des caractères est laissée pour le moment de côté. Nous lui apporterons des améliorations au fur et à mesure des articles à venir.


 

Le code
Voici notre code source complet pour cette application. N'oubliez pas que pour qu'elle se compile en tant qu'application Windows, il faut utiliser le compilateur csc comme suit : csc /t:winexe EditeurTexte.cs .

using System;
using System.IO;
using System.Windows.Forms;

public class FenetreSimple : Form
  {
  TextBox txt;
  String nomFichier;

  public static void Main()
    {
    Application.Run(new FenetreSimple());
    }

  public FenetreSimple()
    {
    this.Text = "MonSuperEditeurTexte";
    this.Width = 300;
    this.Height = 200;

    txt = new TextBox();
    txt.Left = 4;
    txt.Top = 0;
    txt.Width = this.Width - 15; //285;
    txt.Height = this.Height - 50; //150;
    txt.Multiline = true;
    txt.ScrollBars = ScrollBars.Vertical;
    txt.AcceptsTab = true;
    txt.AcceptsReturn = true;
    txt.WordWrap = true;
    Controls.Add(txt);

    MainMenu leMenu = new MainMenu();
    this.Menu = leMenu;
    MenuItem miFile = leMenu.MenuItems.Add("&Fichier");
    miFile.MenuItems.Add(new MenuItem("&Ouvrir...", new EventHandler(this.Ouvrir_Clicked)));
    miFile.MenuItems.Add(new MenuItem("Enregistrer so&us...", new EventHandler(this.EnregistrerSous_Clicked)));
    miFile.MenuItems.Add("-");
    miFile.MenuItems.Add(new MenuItem("Fermer", new EventHandler(this.Fermer_Clicked)));
    MenuItem miInfo = leMenu.MenuItems.Add("&Info");
    miInfo.MenuItems.Add(new MenuItem("&A propos...", new EventHandler(this.Apropos_Clicked)));
    }

  private void Fermer_Clicked(object sender, System.EventArgs e)
    {
    this.Close();
    }

  private void Apropos_Clicked(object sender, System.EventArgs e)
    {
    MessageBox.Show("MonSuperEditeurTexte v0.05 alpha", "This is a copyrighted product");
    }

  protected void Ouvrir_Clicked(object sender, System.EventArgs e)
    {
    OpenFileDialog oFD = new OpenFileDialog();

    oFD.InitialDirectory = "c:\\";
    oFD.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*" ;
    oFD.RestoreDirectory = true ;

    if (oFD.ShowDialog() == DialogResult.OK)
      {
      nomFichier = oFD.FileName;
      try
        {
        StreamReader sr = new StreamReader(nomFichier);
        txt.Text = sr.ReadToEnd();
        sr.Close();
        }
      catch (Exception maieuh)
        {
        txt.Text = "Impossible de lire ce fichier : ";
        txt.Text = maieuh.Message;
        }
      }
    }

  protected void EnregistrerSous_Clicked(object sender, System.EventArgs e)
    {
    SaveFileDialog sFD = new SaveFileDialog();

    sFD.Filter = "Fichier texte (*.txt)|*.txt";
    sFD.RestoreDirectory = true ;

    if(sFD.ShowDialog() == DialogResult.OK)
      {
      try
        {
        StreamWriter sw = new StreamWriter(sFD.FileName);
        sw.Write(txt.Text);
        sw.Close();
        }
      catch(Exception argh)
        {
        MessageBox.Show(argh.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
      }
    }
  }


Les explications suivent page suivante...

    1. Présentation et code | 2. Explications
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages