c# property属性和改变编辑多行文本
一个常见的属性的使用。其中name 属性没有定义私有字段,而age定义了已有字段。
public sealed class employee {
// this property is an automatically implemented property
public string name { get; set; }
private int32 m_age;
public int32 age {
get { return(m_age); }
set {
if (value < 0) // the 'value' keyword always identifies the new value.
throw new argumentoutofrangeexception("value", value.tostring(),
"the value must be greater than or equal to 0");
m_age = value;
}
}
}
改变 propertygrid 控件的编辑风格(2)——编辑多行文本
效果:
适用场合:
1、 编辑多行文本;
2、 编辑长文本。
步骤一:定义从uitypeeditor 派生的类,示例如下:
using system;
using system.windows.forms;
using system.drawing.design;
using system.windows.forms.design;
namespace blog.111com.net.zhangyuk
{
///
/// propertygridmutitext 的摘要说明。
///
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.111com.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();
}