改变 PropertyGrid 控件的编辑风格(1)——加入日期控件

** 改变 ** ** PropertyGrid ** ** 控件的编辑风格( ** ** 1 ** ** )——加入日期控件 ** **

**

**

**

张昱 [email protected]

** 效果: **


** **


**

** 适用场合: ** **

**

编辑日期类型数据

** 步骤一 ** :定义从 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();

**

}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus