我在研究 .NET Framework Windows Forms 的用户控件时发现我自定义的文本类型属性在设计器的属性窗口中不能像自带的文本框(TextBox)那样多行输入,就是直接在设计器的属性编辑窗口中回车换行,而不是按回车键直接就确定输入了。我翻阅了官方的文档,又找了找互联网上的帖子,没有找到答案,我于是就研究 .NET Framework 中自带的 TextBox 控件,终于我在 TextBoxBase 元数据中找到了关于其 Text 属性的特性:
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
[Localizable(true)]
public override string Text { get; set; }
没错,就是第一行的整条语句起作用;看这代码,感觉字符串中那些名字和版本号可能不同的 .NET Framework 框架版本结果也会不一样,想着这应该是内部开发人员定义的,为了避免不必要的异常,建议使用的时候检查当前框架内的定义,直接复制套用。
我把那条特性加到我自定义的属性中后就实现了我要的效果,如下图: