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

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

**

张昱 [email protected]

** 效果: **


** **


**

** 适用场合: ** **

**

1、 打开文件、打印设置等通用对话框

2、 打开特定的对话框

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

using System;

using System.Windows.Forms;

using System.Drawing.Design;

using System.Windows.Forms.Design;

namespace blog.csdn.net.zhangyuk

{

///

1<summary>
2
3///  IMSOpenFileInPropertyGrid  的摘要说明。 
4
5///  </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();

**

}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus