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

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

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

改变 PropertyGrid 控件的编辑风格(1)——加入日期控件 改变 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 )

{

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

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航