Nous allons ajouter un menu à notre fenêtre, pour ouvrir une fenêtre de sélection de fichier (file browser).
Comme nous avons à notre disposition l'IDE Visual Studio, ne nous en privons pas. Nous pouvons simplement ajouter un composant ToolStrip en le sélectionnant dans la boite d'outils et en le déposant dans la fenêtre à l'aide de la souris (drag and drop).
Ensuite, nous pouvons cliquer sur le composant en mode design et sélectionner l'option DropDownButton.
Nous pouvons entrer le texte de la liste (dans notre cas File), puis cliquer sur le premier élément de la liste et entrer le texte de l'option (dans notre cas Open...).
Par défaut, les éléments sont représentés sous la forme d'images. Nous pouvons spécifier que nous désirons les afficher sous forme de texte en effectuant un clic droit sur un élément et sélectionner dans le groupe DisplayStyle l'option Text. Nous avons à notre disposition les options suivantes : None, Text, Image, ImageAndText.
Je sais que cela peut sembler stupide de déclarer une option et de la rendre invisible, mais dans certains cas cela peut se révéler plus pratique de seulement jouer sur une de ses propriétés pour la rendre visible que de la créer.
Pour associer une action à l'évènement généré par un clic sur l'option, il nous suffit de double cliquer sur l'option en mode design, et une fenêtre s'ouvre alors à nous avec cette partie de code qui nous intéresse :
private void fileToolStripMenuItem_Click(object sender, EventArgs e) { }
Nous allons donc commencer à mettre les mains dans le cambouis... Nous allons maintenant spécifier que dans ce cas une fenêtre de sélection de fichier doit apparaître.
Petite astuce : Nous pouvons commencer à introduire le début des noms de classes ou de méthodes que nous désirons utiliser, puis utiliser la combinaison de touches [Shift] + [Space] (les touches majuscules et barre d'espace) qui active les propositions automatiques (auto complete).
private void fileToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog.ShowDialog(); }
Pour vérifier que la boîte de sélection de fichier effectue bien ce que nous en attendons, nous allons placer dans notre fenêtre un composant qui nous permet d'afficher du texte. Comme pour notre ToolStrip, nous allons sélectionner dans l'onglet Toolbox le composant Label, et le déposer dans notre fenêtre en mode édition. Nous pouvons supprimer le texte, et dans l'onglet de propriétés, nous pouvons renommer le composant en filePathLabel (nom utilisé dans le code pour cette instance de Label), et affecter la valeur false à la propriété Visible.
//Dans les déclarations de variables de la classe Form1 //Dans la méthode InitializeComponent() de la classe Form1 this.filePathLabel.AutoSize = true; this.filePathLabel.Name = "filePathLabel"; this.filePathLabel.TabIndex = 1; this.filePathLabel.Visible = false;
Nous allons maintenant modifier le code correspondant à l'évènement du clic sur le menu, pour que non seulement il ouvre une fenêtre de sélection de fichier, mais qu'en plus il place le nom du fichier sélectionné dans la zone de texte que nous venons de créer, et que cette zone soit visible.
private void fileToolStripMenuItem_Click(object sender, EventArgs e) { //Déclaration et initialisation de notre fenêtre de sélection de fichiers //Affichage de la fenêtre openFileDialog.ShowDialog(); //Affectation du label avec le chemin du fichier sélectionné; filePathLabel.Text = openFileDialog.FileName; //Affichage du label filePathLabel.Visible = true; }
Notre programme fonctionne, mais nous pouvons le modifier légèrement pour que le code soit plus facile à comprendre.
Nous allons déplacer la déclaration de la variable openFileDialog pour que sa portée ne se limite pas à la méthode. De cette manière, nous pouvons l'utiliser dans d'autres méthodes, et par exemple déplacer le code qui affichait le chemin, pour en faire une nouvelle méthode à part.
private void fileToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog.ShowDialog(); fillAndDisplayPathLabel(); } private void fillAndDisplayPathLabel() { filePathLabel.Text = openFileDialog.FileName; filePathLabel.Visible = true; }
Nous pouvons aussi modifier la fenêtre de sélection de fichier pour ne permettre que la sélection de fichiers exécutables et de dll.
// // openFileDialog // openFileDialog.Filter = "Executable files (.exe)|*.exe|Dynamic librairies (.dll)|*.dll";
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ClassExplorer { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void fileToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog.ShowDialog(); fillAndDisplayPathLabel(); } private void fillAndDisplayPathLabel() { filePathLabel.Text = openFileDialog.FileName; filePathLabel.Visible = true; } } }
using System.Windows.Forms; namespace ClassExplorer { partial class Form1 { /// <summary> /// Required designer variable. /// </summary> /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.toolStrip1.SuspendLayout(); this.SuspendLayout(); // // toolStrip1 // this.fileToolStripButton}); this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.TabIndex = 0; this.toolStrip1.Text = "toolStrip1"; // // fileToolStripButton // this.fileToolStripMenuItem}); this.fileToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("fileToolStripButton.Image"))); this.fileToolStripButton.Name = "fileToolStripButton"; this.fileToolStripButton.Text = "File"; // // fileToolStripMenuItem // this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Text = "Open..."; // // filePathLabel // this.filePathLabel.AutoSize = true; this.filePathLabel.Name = "filePathLabel"; this.filePathLabel.TabIndex = 1; this.filePathLabel.Visible = false; // // Form1 // this.Controls.Add(this.filePathLabel); this.Controls.Add(this.toolStrip1); this.Name = "Form1"; this.Text = "My Class Explorer"; this.toolStrip1.ResumeLayout(false); this.toolStrip1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); // // openFileDialog // openFileDialog.Filter = "Executable files (.exe)|*.exe|Dynamic librairies (.dll)|*.dll"; } #endregion private ToolStrip toolStrip1; private ToolStripDropDownButton fileToolStripButton; private ToolStripMenuItem fileToolStripMenuItem; private Label filePathLabel; private OpenFileDialog openFileDialog; } }
using System; using System.Collections.Generic; using System.Windows.Forms; namespace ClassExplorer { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); } } }
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.
10 mots clés dont 0 définis manuellement (plus d'information...).
Avertissement
Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.
Recherche (afficher)
Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
Citation (masquer)