繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> 改变 PropertyGrid 控件的编辑风格(1)——加入日期控件

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

2007-02-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:改变 PropertyGrid 控件的编辑风格(1)——加入日期控件 张昱e-zhangyu@vip.sina.com 效果: 适用场合: 编辑日期类型数据 步骤一:定义从UITypeEditor 派生的类,示例如下: using System; using System.Wind...

改变 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

{

///

/// 在 PropertyGrid 上显示日期控件

///

///

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();

}

责任编辑:admin
相关文章