让 UserControl 的 Text 属性(Property) 在设计时(Form Designer中)可见
来源:互联网 发布:淘宝卖家怎样提前收款 编辑:程序博客网 时间:2024/04/20 09:17
今天在写一个自定义的控件时遇到一个问题。
这个自定义控件为了实现一个 特殊功能的 Button, 暂时命名为 ButtonEx
实现概要:
public class ButtonEx : System.Windows.Forms.UserControl
{
private string m_strTxt = "";
public override string Text
{
get
{
return this.m_strTxt;
}
set
{
if (value == null || value.Length < 1)
{
value = this.Name.ToString();
}
this.m_strTxt = value;
}
}
}
但是这样,回到 Form Designer 中发现 ButtonEx的属性列表里并未出现 Text 属性。
将 override 换成 new 结果还是一样, 但是如果将属性名换为: Caption, 此时在属性列表中
却能看到,不得其解!
几次反复下来,注意到了一点: 当我在VS中输入public override 后,在弹出的补齐列表中并未发现
这个 Text 属性, 也就是说 VS 此时并没看到这个属性。
启动 Reflector, 定位到 UserControl 控件。查看代码一下代码发现这个 Text 属性以下面的方式 override了:
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never), Bindable(false)]
public override string Text { get; set; }
从以上override 时设置的 attributes 中的名字中不难看出为什么 Text 属性不能显示了。
所以,在刚才的UserControl 的实现代码里加上这些 attributes 并将相应的取值改过来:
[DefaultEvent("Click")] // 由于UserControl 类在设计时双击时默认的添加的事件为Load,
// 而Button 的双击添加的事件该为Click, 在此修改过来.
public class ButtonEx : System.Windows.Forms.UserControl
{
private string m_strTxt = "";
[Browsable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible),
EditorBrowsable(EditorBrowsableState.Always), Bindable(true)]
public override string Text
{
get
{
return this.m_strTxt;
}
set
{
if (value == null || value.Length < 1)
{
value = this.Name.ToString();
}
this.m_strTxt = value;
}
}
}
修改编译后, 到 Form Designer 中查看,熟悉的Text属性出现了。
- 让 UserControl 的 Text 属性(Property) 在设计时(Form Designer中)可见
- 自定义UserControl的属性为什么不能在设计时显示在属性窗口中
- C# 设计时动态改变实体在PropertyGrid中显示出来的属性
- 组件的设计时属性
- .Net 用户控件中复杂属性的设计时支持
- Alutium Designer中原理图库设计时如何设置鼠标移动元器件的最小间隔
- 如何让.Net控件在设计时InitializeComponent()中不生成相关代码(C#组件开发)
- 在.NET中调试设计时(design-time)控件
- Axure RP Pro - 相关问题 - Text Panel部件在设计时的效果与原型不一致
- 如何让.Net控件在设计时InitializeComponent()中不生成相关代码
- 反证法(归谬法)及其在算法设计时的应用
- 让自定义用户控件中代码的执行分成“设计时”和“运行时”
- 网站中专题设计时的考虑
- 【WPF】在设计时,属性设置错误弹出提示框
- hibernate中实体设计时属性类型选择问题
- Form Builder开发中属性类(Property Classes)
- Form Builder开发中属性类(Property Classes)
- 设计时属性:设计时属性相关类型
- test
- 为什么winform窗口在其他电脑上变大了
- DBCP使用例子
- Ignatius and the Princess III
- 心痛
- 让 UserControl 的 Text 属性(Property) 在设计时(Form Designer中)可见
- Android: 缩放图片文件引起的OOM异常
- fuse的安装与使用
- treeview选择节点问题
- Shell中的特殊变量
- OPhone 2D UI 动画教程之一——Animation介绍
- SqlServer 作业完成后邮件通知
- Struts2+Spring整合
- dsad