改变 PropertyGrid 控件的编辑风格(2)——编辑多行文本

** 改变 ** ** PropertyGrid ** ** 控件的编辑风格( ** ** 2 ** ** )——编辑多行文本 ** **

**

张昱 [email protected]

** 效果: **


** **


**

** 适用场合: ** **

**

1、 编辑多行文本;

2、 编辑长文本。

** 步骤一 ** :定义从 UITypeEditor 派生的类,示例如下:

using System;

using System.Windows.Forms;

using System.Drawing.Design;

using System.Windows.Forms.Design;

namespace blog.csdn.net.zhangyuk

{

///

1<summary>
2
3///  PropertyGridMutiText  的摘要说明。 
4
5///  </summary>

public class PropertyGridRichText : UITypeEditor

{

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 )

{

RichTextBox box = new RichTextBox();

box.Text = value as string ;

edSvc.DropDownControl( box );

return box.Text;

}

}

}

catch ( Exception ex )

{

System.Console.WriteLine( "PropertyGridRichText Error : " + ex.Message );

return value ;

}

return value ;

}

}

}

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

namespace blog.csdn.net.zhangyuk

{

public class SomeProperties

{

private string _finished_time = "";

……

// 多行文本编辑框

string _mutiLineSample = "";

[

Description(" 多行文本编辑框 "),

Category(" 属性 "),

** EditorAttribute( typeof (PropertyGridRichText),

**

** typeof ** ** (System.Drawing.Design.UITypeEditor))

**

]

]

public String 多行文本

{

get { return _mutiLineSample; }

set { _mutiLineSample = 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