我用一个文本框和一个richtextbox创建了一个C#usercontrol。
如何从usercontrol外部访问richtextbox的属性。
例如..如果我把它放在一个表单中,我怎么能使用richtextbox的Text属性???
感谢
答案 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;
}
}