【问题标题】:Edit controls in custom control - c# winforms在自定义控件中编辑控件 - c# winforms
【发布时间】:2015-10-06 20:12:47
【问题描述】:

我正在尝试通过单击不在自定义控件中的“更改”按钮来更改自定义控件的文本框的背景颜色(自定义控件名称为“tc1”,文本框名称为“txtb”) .我应该如何解决这个问题?

谢谢, 韦恩·西克卢纳

【问题讨论】:

  • 如果您可以控制自定义控件的源,请给它一个公共属性来更改该颜色,因为它可以访问其子控件。

标签: c# winforms


【解决方案1】:

选项 1:

您可以公开您的TextBox。为此,请转到用户控件的设计器,然后选择 Modifier 属性并将值设置为 public。

现在您可以不受控制地访问它。例如,如果您有一个名为 userControl1 的用户控件实例,并且您的文本框的名称是 txtb

userControl1.txtb.BackColor = Color.Red;

选项 2:

作为另一种选择,您可以创建一个公共属性并在该属性中获取或设置您的文本框颜色。

public Color TextBoxBackColor
{
    get
    {
        return txtb.BackColor;
    }
    set
    {
        txtb.BackColor = value;
    }
}

现在您可以不受控制地访问此属性。例如,如果您有一个名为 userControl1 的用户控件实例:

userControl1.TextBoxBackColor = Color.Red;

【讨论】:

  • 公开 TextBox 会破坏封装。最好在自定义控件上提供一个新属性。
  • @EricJ。总的来说,我同意你的看法,但有时需要进行一些权衡,你会更愿意公开控件。
  • 因此,通过公开控件,我基本上可以编辑该控件的所有属性。我说的对吗?
  • @WayneScicluna 是的,通过将控件公开为公共成员,您可以访问该控件的所有公共属性和方法,选项 2 用于限制对 BackColor 属性的访问.
  • 好的,我明白了:)我刚刚做了一个7段显示[链接]s4.postimg.org/4vhorzp8t/lcd.jpg
【解决方案2】:

由于您正在构建用户控件,因此可以将更改文本框的颜色视为控件的一项功能,并且可以通过添加属性来提供给客户端。

[Browsable(true)]  // allows you to change it in the designer
public Color TextBoxBackColor
{
    get { return txtb.BackColor; }
    set { txtb.BackColor = value; }
}

【讨论】:

  • 该公共属性默认为Browsable
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 2012-08-30
  • 1970-01-01
  • 2010-09-07
  • 2011-01-12
  • 1970-01-01
相关资源
最近更新 更多