20

我制作了一个带有一个文本框和一个富文本框的 C# 用户控件。

如何从用户控件外部访问富文本框的属性。

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

谢谢

4

5 回答 5

32

最干净的方法是将所需的属性公开为用户控件的属性,例如:

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; }
  }


  //...
}

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

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

于 2009-01-04T17:28:45.877 回答
4

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

于 2009-01-04T17:26:56.803 回答
3

像这样向用户控件添加一个属性

public string TextBoxText
{
    get
    {
        return textBox1.Text;
    }
    set
    {
        textBox1.Text = value;
    }
}
于 2009-01-04T17:30:30.803 回答
2

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

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

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

解决方案是将属性更改为私有属性,并使用两种公共方法来设置和获取值。设计者将尝试自动分配属性,但不理会方法。

于 2010-06-16T22:04:43.733 回答
0

您需要为richtextbox 创建一个公共属性,或者公开其他一些可以设置richtextbox 文本的属性,例如:

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
于 2009-01-04T17:32:03.437 回答