返回
原创文章

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

产品经理-40

2014-8-1 12:30:17

关注楼主

706414

效果:





适用场合:



编辑日期类型数据




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



         }



码字不容易,赏杯咖啡钱

原创文章+关注

主题:34  帖数:2万

全部回复14
ymZ LV.5

沙发2016-9-7 13:23:42

很不错
hyt1v4be5 LV.4

板凳2016-9-7 13:20:43

楼主是超人
晨挥 LV.4

地板2016-9-7 13:34:36

好帖就是要顶
晨挥 LV.4

5#2016-9-7 13:51:34

真心顶
123下一页
我说一句...

点赞

251

收藏

21

分享

新浪微博 QQ空间 QQ好友 腾讯微博 二维码 复制网址 举报主题

加载中...

  • /

  • 三十
  • 推广
    菜单