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

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

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

感谢

有帮助吗?

解决方案

最干净的方法是将所需的属性公开为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控件与另一个控件进行交换,则不会破坏控件的调用者/用户。

其他提示

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

像这样

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

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

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

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

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

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

private RichTextBox rtb;

public string RichTextBoxText
{
    get
    {
        return rtb.Text;
    }
    set
    {
        rtb.Text = value;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top