** 改变 ** ** PropertyGrid ** ** 控件的编辑风格( ** ** 1 ** ** )——加入日期控件 ** **
**
**
**
** 效果: **
** **
**
** 适用场合: ** **
**
编辑日期类型数据
** 步骤一 ** :定义从 UITypeEditor 派生的类,示例如下:
using System;
using System.Windows.Forms;
using System.Drawing.Design;
using System.Windows.Forms.Design;
namespace blog.csdn.net.zhangyuk
{
///
1<summary>
2
3/// 在 PropertyGrid 上显示日期控件
4
5///
6
7/// </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 )
{
System.Console.WriteLine( "PropertyGridDateItem Error : " + ex.Message );
return value ;
}
return value ;
}
}
}
** 步骤二 ** :编辑属性类,指定编辑属性。示例如下:
namespace blog.csdn.net.zhangyuk
{
public class SomeProperties
{
private string _finished_time = "";
……
[
Description(" 完成时间 "),
Category(" 属性 "),
**
** EditorAttribute( typeof (PropertyGridDateItem),
**
** typeof ** ** (System.Drawing.Design.UITypeEditor))
**
]
** ]
public String 完成时间
{
get { return _finished_date; }
set { _finished_date = value ;}
}
……
}
}
** 步骤三 ** :设置 PropertyGrid 的属性对象。示例如下:
private void Form1_Load( object sender, System.EventArgs e)
{
** this .propertyGrid1.SelectedObject = new SomeProperties();
**
}