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...
|