Click here to Skip to main content
15,886,110 members
Articles / Programming Languages / C#

Extender provider to simplify file/folder selection

Rate me:
Please Sign up or sign in to vote.
4.71/5 (20 votes)
5 Jan 2005CPOL4 min read 59.4K   427   44  
Common task of letting the user select a file or folder wrapped in an IExtenderProvider implementation.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace TestApp
{
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.TextBox textBoxFolder;
		private System.Windows.Forms.PictureBox pictureBoxBrowse;
		private System.Windows.Forms.Label label1;
		private System.Windows.Forms.Label label2;
		private System.Windows.Forms.Label label3;
		private System.Windows.Forms.Button buttonBrowse;
		private System.Windows.Forms.LinkLabel linkLabel1;
		private MavComponents.FolderBrowserExtenderProvider folderBrowserExtenderProvider1;
		private MavComponents.OpenFileBrowserExtenderProvider openFileBrowserExtenderProvider1;
		private MavComponents.SaveFileBrowserExtenderProvider saveFileBrowserExtenderProvider1;
		private System.ComponentModel.IContainer components;

		public Form1()
		{
			InitializeComponent();
		}

		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Vom Windows Form-Designer generierter Code
		/// <summary>
		/// Erforderliche Methode f�r die Designerunterst�tzung. 
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor ge�ndert werden.
		/// </summary>
		private void InitializeComponent()
		{
			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
			this.textBoxFolder = new System.Windows.Forms.TextBox();
			this.pictureBoxBrowse = new System.Windows.Forms.PictureBox();
			this.label1 = new System.Windows.Forms.Label();
			this.label2 = new System.Windows.Forms.Label();
			this.buttonBrowse = new System.Windows.Forms.Button();
			this.label3 = new System.Windows.Forms.Label();
			this.linkLabel1 = new System.Windows.Forms.LinkLabel();
			this.folderBrowserExtenderProvider1 = new MavComponents.FolderBrowserExtenderProvider();
			this.openFileBrowserExtenderProvider1 = new MavComponents.OpenFileBrowserExtenderProvider();
			this.saveFileBrowserExtenderProvider1 = new MavComponents.SaveFileBrowserExtenderProvider();
			this.SuspendLayout();
			// 
			// textBoxFolder
			// 
			this.textBoxFolder.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right)));
			this.folderBrowserExtenderProvider1.SetBrowseButton(this.textBoxFolder, this.pictureBoxBrowse);
			this.textBoxFolder.Location = new System.Drawing.Point(8, 32);
			this.textBoxFolder.Name = "textBoxFolder";
			this.textBoxFolder.Size = new System.Drawing.Size(312, 20);
			this.textBoxFolder.TabIndex = 0;
			this.textBoxFolder.Text = "";
			// 
			// pictureBoxBrowse
			// 
			this.pictureBoxBrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
			this.pictureBoxBrowse.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxBrowse.Image")));
			this.pictureBoxBrowse.Location = new System.Drawing.Point(328, 16);
			this.pictureBoxBrowse.Name = "pictureBoxBrowse";
			this.pictureBoxBrowse.Size = new System.Drawing.Size(32, 32);
			this.pictureBoxBrowse.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
			this.pictureBoxBrowse.TabIndex = 1;
			this.pictureBoxBrowse.TabStop = false;
			// 
			// label1
			// 
			this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right)));
			this.label1.Location = new System.Drawing.Point(8, 16);
			this.label1.Name = "label1";
			this.label1.Size = new System.Drawing.Size(312, 16);
			this.label1.TabIndex = 2;
			this.label1.Text = "Enter a folder or browse for one";
			// 
			// label2
			// 
			this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right)));
			this.label2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
			this.openFileBrowserExtenderProvider1.SetBrowseButton(this.label2, this.buttonBrowse);
			this.label2.Location = new System.Drawing.Point(8, 80);
			this.label2.Name = "label2";
			this.label2.Size = new System.Drawing.Size(312, 23);
			this.label2.TabIndex = 3;
			this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
			// 
			// buttonBrowse
			// 
			this.buttonBrowse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
			this.buttonBrowse.Location = new System.Drawing.Point(328, 80);
			this.buttonBrowse.Name = "buttonBrowse";
			this.buttonBrowse.Size = new System.Drawing.Size(24, 23);
			this.buttonBrowse.TabIndex = 4;
			this.buttonBrowse.Text = "...";
			// 
			// label3
			// 
			this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right)));
			this.label3.Location = new System.Drawing.Point(8, 64);
			this.label3.Name = "label3";
			this.label3.Size = new System.Drawing.Size(312, 16);
			this.label3.TabIndex = 5;
			this.label3.Text = "You\'re not limited to TextBox controls";
			// 
			// linkLabel1
			// 
			this.linkLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right)));
			this.linkLabel1.Location = new System.Drawing.Point(8, 120);
			this.linkLabel1.Name = "linkLabel1";
			this.linkLabel1.Size = new System.Drawing.Size(312, 23);
			this.linkLabel1.TabIndex = 6;
			this.linkLabel1.TabStop = true;
			this.linkLabel1.Text = "Click to browse for a file";
			// 
			// folderBrowserExtenderProvider1
			// 
			// 
			// folderBrowserExtenderProvider1.FolderBrowserDialog
			// 
			this.folderBrowserExtenderProvider1.FolderBrowserDialog.Description = "Please select a folder";
			this.folderBrowserExtenderProvider1.FolderBrowserDialog.RootFolder = System.Environment.SpecialFolder.MyComputer;
			// 
			// openFileBrowserExtenderProvider1
			// 
			// 
			// openFileBrowserExtenderProvider1.FileDialog
			// 
			this.openFileBrowserExtenderProvider1.FileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
			this.openFileBrowserExtenderProvider1.FileDialog.Title = "Select a text file to open";
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(368, 158);
			this.Controls.Add(this.linkLabel1);
			this.Controls.Add(this.label3);
			this.Controls.Add(this.buttonBrowse);
			this.Controls.Add(this.label2);
			this.Controls.Add(this.label1);
			this.Controls.Add(this.pictureBoxBrowse);
			this.Controls.Add(this.textBoxFolder);
			this.Name = "Form1";
			this.Text = "Form1";
			this.Load += new System.EventHandler(this.Form1_Load);
			this.ResumeLayout(false);

		}
		#endregion

		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void Form1_Load(object sender, System.EventArgs e)
		{
			// Because of a bug in code generation with an Extender Provider extending
			// a control with itself this code was added by hand and not with
			// a visual designer!
			saveFileBrowserExtenderProvider1.SetBrowseButton(linkLabel1, linkLabel1);
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) 4voice AG
Germany Germany
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions