答案:改变 PropertyGrid 控件的编辑风格(1)——加入日期控件
张昱e-zhangyu@vip.sina.com
效果:
适用场合:
编辑日期类型数据
步骤一:定义从UITypeEditor 派生的类,示例如下:
using System;
using System.Windows.Forms;
using System.Drawing.Design;
using System.Windows.Forms.Design;
namespace blog.csdn.net.zhangyuk
{
/// <summary>
/// 在 PropertyGrid 上显示日期控件
///
/// </summary>
public class PropertyGridDateItem : UITypeEditor
{
MonthCalendar dateControl = new MonthCalendar();
public PropertyGridDateItem()
{
dateControl.MaxSelectionCount = 1;
}
public override UITypeEditorEditStyle GetEditStyle(
System.ComponentModel.ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.DropDown;
}
public override object EditValue(
System.ComponentModel.ITypeDescriptorContext context,
System.IServiceProvider provider,
object value)
{
try
{
IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)
provider.GetService(typeof(IWindowsFormsEditorService));
if( edSvc != null )
{
if( value is string )
{
dateControl.SelectionStart = DateTime.Parse( value as String );
edSvc.DropDownControl( dateControl );
return dateControl.SelectionStart.ToShortDateString();
}
else if( value is DateTime )
{
dateControl.SelectionStart = (DateTime)value;
edSvc.DropDownControl( dateControl );
return dateControl.SelectionStart;
}
}
}
catch( Exception ex )