Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C#
Expertise: Intermediate
Nov 8, 2004

Set Two Items of a Property Grid from the Drop-down List

The MSDN-library does not contain a simple example demonstrating the picking-out item from drop-down list box for the property grid items. This sample demonstrates the technique for setting two items of a property grid from the drop-down list. These items have the type of string, but it must be simple to remake them for any other type.

Firstly, inherit the class from UITypeEditor:


	public class SelEditor : System.Drawing.Design.UITypeEditor
	{        
//this is a container for strings, which can be picked-out
		ListBox Box1 = new ListBox();
		IWindowsFormsEditorService edSvc;
//this is a string array for drop-down list
		public static string[] strList;

		public SelEditor()
		{
			Box1.BorderStyle=BorderStyle.None;
//add event handler for drop-down box when item will be selected
			Box1.Click+=new EventHandler(Box1_Click);
		}

		public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle
(System.ComponentModel.ITypeDescriptorContext context)
		{
			return UITypeEditorEditStyle.DropDown;
		}

		// Displays the UI for value selection.
		public override object EditValue
(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object
value)
		{
			Box1.Items.Clear();
			Box1.Items.AddRange(strList);
			Box1.Height=Box1.PreferredHeight;
			// Uses the IWindowsFormsEditorService to display a 
			// drop-down UI in the Properties window.
			edSvc = (IWindowsFormsEditorService)provider.GetService(typeof
(IWindowsFormsEditorService));
			if( edSvc != null )
			{
				edSvc.DropDownControl( Box1 );
				return Box1.SelectedItem;

			}
			return value;
		}

		private void Box1_Click(object sender, EventArgs e)
		{
			edSvc.CloseDropDown();
		}
	}

Secondly, describe a property in the class, displayed in the property grid:

	public class Class1
	{
//These are string arrays for different drop-down list.
		string[] Str1= {"AAA","BBB","CCC","DDDD"};
		string[] Str2= {"WW","EEE"};

		string s1,s2;

		public Class1()
		{
			//
			// TODO: Add constructor logic here
			//
		}


		[EditorAttribute(typeof(SelEditor), typeof(System.Drawing.Design.UITypeEditor))]
		public string STR_1
		{
			get{SelEditor.strList=Str1; return s1;}
			set{s1=value;}
		}
		
		[EditorAttribute(typeof(SelEditor), typeof(System.Drawing.Design.UITypeEditor))]
		public string STR_2
		{
			get{SelEditor.strList=Str2; return s2;}
			set{s2=value;}
		}

	}
Vladimir Shaposhnik
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap