我制作了一个带有一个文本框和一个富文本框的 C# 用户控件。
如何从用户控件外部访问富文本框的属性。
例如..如果我把它放在一个表单中,我怎么能使用richtextbox的Text属性???
谢谢
我制作了一个带有一个文本框和一个富文本框的 C# 用户控件。
如何从用户控件外部访问富文本框的属性。
例如..如果我把它放在一个表单中,我怎么能使用richtextbox的Text属性???
谢谢
最干净的方法是将所需的属性公开为用户控件的属性,例如:
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; }
}
//...
}
通过这种方式,您可以控制要公开的属性以及它们应该是读/写还是只读的。(当然,您应该为属性使用更好的名称,具体取决于它们的含义)。
这种方法的另一个优点是它隐藏了用户控件的内部实现。如果您想将您的富文本控件与其他控件交换,您不会破坏控件的调用者/用户。
将属性网格中 RichTextBox 的访问修饰符(“修饰符”)更改为 Public。
像这样向用户控件添加一个属性
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;
}
}