中国学客联盟

 找回密码
 立即注册




查看: 23026|回复: 10

改变 PropertyGrid 控件的编辑风格(3)——打开对话框

  [复制链接]

[UID商城]   [抢购靓号]

该用户从未签到

产品经理

Rank: 70Rank: 70Rank: 70Rank: 70Rank: 70Rank: 70Rank: 70

UID
40
威望
0
贡献
0
在线时间
1 小时
注册时间
2014-2-26
发表于 2014-8-1 12:25:38 | 显示全部楼层 |阅读模式

效果:

propertygridex3.JPG

步骤一:定义从UITypeEditor 派生的类,以 OpenFileDialog 对话框为例,示例代码如下:



using System;



using System.Windows.Forms;



using System.Drawing.Design;



using System.Windows.Forms.Design;





namespace blog.csdn.net.zhangyuk



{



     /// <summary>



     /// IMSOpenFileInPropertyGrid 的摘要说明。



     /// </summary>



     public class PropertyGridFileItem : UITypeEditor



     {



         public override UITypeEditorEditStyle GetEditStyle(



System.ComponentModel.ITypeDescriptorContext context)



         {



              return UITypeEditorEditStyle.Modal;



         }



        



         public override object EditValue(



System.ComponentModel.ITypeDescriptorContext context,



System.IServiceProvider provider,



object value)



         {           



              IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)



provider.GetService(typeof(IWindowsFormsEditorService));



              if( edSvc != null )



              {



                   // 可以打开任何特定的对话框



                   OpenFileDialog dialog = new OpenFileDialog();



                   dialog.AddExtension = false;



                   if( dialog.ShowDialog().Equals(DialogResult.OK) )



                   {



                       return dialog.FileName;



                   }



              }



              return value;



         }



     }



}




步骤二:编辑属性类,指定编辑属性。示例如下:



namespace blog.csdn.net.zhangyuk



{



         public class SomeProperties



     {



         private string _finished_time   = "";



                   ……



         // 文件



         string _fileName = "";



         [



              Description("文件打开对话框"),



              Category("属性"),



            EditorAttribute(typeof(PropertyGridFileItem),



typeof(System.Drawing.Design.UITypeEditor))





         public String 文件



         {



              get { return _fileName; }



              set { _fileName = value;}



         }



         ……



         }



}




步骤三:设置PropertyGrid的属性对象。示例如下:



         private void Form1_Load(object sender, System.EventArgs e)



         {



            this.propertyGrid1.SelectedObject = new SomeProperties();



         }



哎...今天够累的,签到来了7...

[UID商城]   [抢购靓号]

该用户从未签到

高级会员

Rank: 4

UID
3556
威望
164
贡献
0
在线时间
1 小时
注册时间
2014-2-26
发表于 2016-9-1 09:09:04 | 显示全部楼层
不错不错
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

中级会员

Rank: 3Rank: 3Rank: 3

UID
3640083
威望
61
贡献
0
在线时间
2 小时
注册时间
2016-3-7
发表于 2016-9-1 09:18:56 | 显示全部楼层
LZ真是人才
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

高级会员

Rank: 4

UID
885
威望
164
贡献
0
在线时间
1 小时
注册时间
2014-2-26
发表于 2016-9-1 09:35:12 | 显示全部楼层
非常好的内容,路过看看,保存一下
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

高级会员

Rank: 4

UID
885
威望
164
贡献
0
在线时间
1 小时
注册时间
2014-2-26
发表于 2016-9-1 09:35:42 | 显示全部楼层
好帖就是要顶
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

中级会员

Rank: 3Rank: 3Rank: 3

UID
3639249
威望
62
贡献
0
在线时间
1 小时
注册时间
2016-2-18
发表于 2016-9-1 09:40:24 | 显示全部楼层
真心顶
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

中级会员

Rank: 3Rank: 3Rank: 3

UID
3640227
威望
62
贡献
0
在线时间
1 小时
注册时间
2016-7-31
发表于 2016-9-19 15:05:11 | 显示全部楼层
难得一见的好帖
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

中级会员

Rank: 3Rank: 3Rank: 3

UID
3640215
威望
65
贡献
0
在线时间
0 小时
注册时间
2016-6-30
发表于 2016-9-19 15:06:31 | 显示全部楼层
真心顶
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

中级会员

Rank: 3Rank: 3Rank: 3

UID
3640222
威望
62
贡献
0
在线时间
1 小时
注册时间
2016-7-22
QQ
发表于 2016-9-19 15:08:11 | 显示全部楼层
非常好的内容,路过看看,保存一下
中国学客联盟

[UID商城]   [抢购靓号]

该用户从未签到

中级会员

Rank: 3Rank: 3Rank: 3

UID
3640226
威望
61
贡献
0
在线时间
0 小时
注册时间
2016-7-30
发表于 2016-9-19 15:39:58 | 显示全部楼层
很好哦
中国学客联盟
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

快速回复 返回顶部 返回列表