改变 PropertyGrid 控件的编辑风格(1)——加入日期控件 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 改变 PropertyGrid 控件的编辑风格(1)——加入日期控件 (http://www.webasp.net/article/26/25979.htm) |
| -- 作者:未知 -- 发布日期: 2005-08-18 |
改变 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(); } |
| webasp.net |