自定义属性弹出窗体 我想做一个自定义属性 在属性编辑器里面鼠标单击设置时就弹出一对话框下来可以再上面写文字 就类似Textbox的lines属性 不知道怎么实现大家指点一下啊最好有源码实例 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在TextBox的Text属性栏上本来就可以实现这个功能啊 看看这篇文档吧:http://www.microsoft.com/china/msdn/archives/library/dndotnet/html/usingpropgrid.asp 只要屬性是string[]型就可以了 转一个,试试吧,我已经测试通过改变 PropertyGrid 控件的编辑风格(2)--编辑多行文本 适用场合: 1、 编辑多行文本; 2、 编辑长文本。 步骤一:定义从UITypeEditor 派生的类,示例如下: using System; using System.Windows.Forms; using System.Drawing.Design; using System.Windows.Forms.Design; namespace blog.csdn.net.zhangyuk { /// <summary> /// PropertyGridMutiText 的摘要说明。 /// </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(); } private System.ComponentModel.Container components = null; public string[] sLines { set { _sLines=value; } get { return _sLines; } }放在自定義的控件裡,然後在其它窗體使用這個控件,看sLines這屬性是不是你要的效果。 C# 结构体和数组转化问题 dategridview出现未将对象引用设置到对象的实例错误 怎么判断导入数据库的excel 单元格格式 是日期类型的? JS缓存的问题【欢迎解答】 winform程序中的代码重用问题? 这是段返回电脑配置的代码 编译通过 没有返回值 求高人指点 .net2003出现问题,老要重启。 sql调用exe时exe不显示的问题 【急!!!】C#移动视频控件出现闪屏【求大神帮忙】 一个数据库查询的问题,不知道错在那里 高手帮帮忙看下这是什么问题吧.急. 数据绑定xml(急急急!!!)
http://www.microsoft.com/china/msdn/archives/library/dndotnet/html/usingpropgrid.asp
改变 PropertyGrid 控件的编辑风格(2)--编辑多行文本
适用场合: 1、 编辑多行文本; 2、 编辑长文本。
步骤一:定义从UITypeEditor 派生的类,示例如下: using System; using System.Windows.Forms; using System.Drawing.Design; using System.Windows.Forms.Design;
namespace blog.csdn.net.zhangyuk { /// <summary> /// PropertyGridMutiText 的摘要说明。 /// </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(); }
private System.ComponentModel.Container components = null;
public string[] sLines
{
set
{
_sLines=value;
}
get
{
return _sLines;
}
}放在自定義的控件裡,然後在其它窗體使用這個控件,看sLines這屬性是不是你要的效果。