如何在C#中访问usercontrol的属性

时间:2009-01-04 17:23:32

标签: c# user-controls properties richtextbox

我用一个文本框和一个richtextbox创建了一个C#usercontrol。

如何从usercontrol外部访问richtextbox的属性。

例如..如果我把它放在一个表单中,我怎么能使用richtextbox的Text属性???

感谢

5 个答案:

答案 0 :(得分:32)

最干净的方法是将所需的属性公开为usercontrol的属性,例如:

class MyUserControl
{
  // expose the Text of the richtext control (read-only)
  public string TextOfRichTextBox
  {
    get { return richTextBox.Text; }
  }
  // expose the Checked Property of a checkbox (read/write)
  public bool CheckBoxProperty
  {
    get { return checkBox.Checked; }
    set { checkBox.Checked = value; }
  }


  //...
}

通过这种方式,您可以控制要公开的属性以及它们是应该是读/写还是只读。 (当然,你应该根据它们的含义使用更好的属性名称。)

这种方法的另一个优点是它隐藏了用户控件的内部实现。如果您想要将您的richtext控件与另一个控件进行交换,则不会破坏控件的调用者/用户。

答案 1 :(得分:3)

将属性网格中RichTextBox的访问修饰符(“修饰符”)更改为Public。

答案 2 :(得分:3)

像这样

向usercontrol添加属性
public string TextBoxText
{
    get
    {
        return textBox1.Text;
    }
    set
    {
        textBox1.Text = value;
    }
}

答案 3 :(得分:2)

我最近在使用自定义类时遇到了一些问题:

用户控件的公共属性属于自定义类类型。默认情况下,设计器会尝试为其指定一些值,因此在设计器代码中,行userControlThing.CustomClassProperty = null正在自动添加。

目的是在运行程序时能够在任何时候为用户控件提供自定义类(以更改用户可见的值)。由于set {}部分未检查空值,因此会出现各种错误。

解决方案是将属性更改为私有属性,并使用两个公共方法来设置和获取值。设计人员将尝试自动分配属性,但仅留下方法。

答案 4 :(得分:0)

您需要为richtextbox创建一个公共属性,或者公开一些其他属性来完成设置richtextbox文本的工作,如:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}