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

Property Grid - Dynamic List ComboBox, Validation, and More

Rate me:
Please Sign up or sign in to vote.
4.57/5 (20 votes)
25 Sep 2009CPOL17 min read 167.4K   11.2K   90  
A PropertyGrid implementation showing how-to use, best practices, validation, and more.
using System;
using System.ComponentModel;
using CustomControls.Data;

namespace CustomControls.ComboBox
{
	public class EnumGridComboBox : GridComboBox
	{
		#region Overrides

		/// <summary>
		/// Get the object selected in the ComboBox
		/// </summary>
		/// <returns>Selected Object</returns>
		protected override object GetDataObjectSelected( ITypeDescriptorContext context )
		{
			return ( base.ListBox.SelectedItem );
		}

		/// <summary>
		/// Find the list of data items to populate the ComboBox
		/// </summary>
		/// <param name="context"></param>
		protected override void RetrieveDataList( ITypeDescriptorContext context )
		{
			// Find the Attribute that has the path to the Enumerations list
			foreach ( Attribute attribute in context.PropertyDescriptor.Attributes )
			{
				if ( attribute is EnumListAttribute )
				{
					base.ListAttribute = attribute as EnumListAttribute;
					break;
				}
			}

			// If we found the Attribute, find the Data List
			if ( base.ListAttribute != null )
			{
				// Save the DataList
				base.DataList = Enum.GetValues( ((EnumListAttribute)base.ListAttribute).EnumType ); 
			}
		}

		#endregion
	}
}

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) Webbert Solutions
United States United States
Dave is an independent consultant working in a variety of industries utilizing Microsoft .NET technologies.

Comments and Discussions