c# - 如何让用户控件中的自定义设计器属性在运行时具有价值?
问题描述
我创建了一个复合用户控件,其中包含一个标签、一个复选框和一个按钮。我已经设置了要在表单设计器中设置的某些属性。
public partial class ctlBoundCheckButton : UserControl
{
[Browsable(true)]
public string _chkText { get; set; }
public string _btnText { get; set; }
public string _lblText { get; set; }
public ctlBoundCheckButton()
{
InitializeComponent();
checkBox1.Text = _chkText; // _chkText is null :(
button1.Text = _btnText;
label1.Text = _lblText;
}
当我将此用户控件放到表单上时,自定义属性在表单设计器中显示得很好,我可以为它们分配值:
但是属性在运行时为空。正如您在控件的构造函数中看到的那样,这些值保持为空。在复合自定义控件中设置自定义属性的正确方法是什么?
解决方案
正如其他人建议的那样,您可以尝试在 get set 方法中设置属性。
这是您可以参考的代码示例。
public partial class ctlBoundCheckButton : UserControl
{
[Browsable(true)]
public string _chkText
{
get { return checkBox1.Text; }
set { checkBox1.Text=value; }
}
public string _btnText
{
get { return button1.Text; }
set { button1.Text = value; }
}
public string _lblText
{
get { return label1.Text; }
set { label1.Text = value; }
}
public ctlBoundCheckButton()
{
InitializeComponent();
}
}
结果:
推荐阅读
- php - 通过自定义文本更改 WooCommerce 产品可用性在库存文本中
- sql - 列 A 上的 SQL 内连接并比较列 B 中的值
- screenshot - 是否可以仅对带有应用程序的屏幕而不是我的所有 3 个屏幕进行失败的屏幕截图?
- r - R tibble:Col-1 与 Col2 为“ch2”的最后一行的差异
- c - 尝试编写一个程序来检查密码以查看它是否至少有 1 个大写和小写字母以及 1 个数字
- image - Flutter 如何共享 directory.path 图像
- python - 将来自 id groupby 的值分配给 pandas 数据帧的每个 id
- docker - 码头集装箱和“iptables -I FORWARD -j NFQUEUE”
- excel - 在没有打印区域的 excel 中查找分页符
- vhdl - 为什么我把它当作一个空的选择设计?