Как получить доступ к свойствам usercontrol в С#
Я создал пользовательское управление С# с одним текстовым полем и одним richtextbox.
Как я могу получить доступ к свойствам richtextbox вне пользовательского контроля.
Например.. если я поместил его в форму, как я могу использовать свойство Text для richtextbox???
спасибо
Ответы
Ответ 1
Самый чистый способ состоит в том, чтобы показать нужные свойства в качестве свойств вашего пользовательского контроля, например:
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 другим, вы не будете нарушать вызывающих/пользователей вашего элемента управления.
Ответ 2
Измените модификатор доступа ( "Модификаторы" ) RichTextBox в сетке свойств на Public.
Ответ 3
Добавьте свойство usercontrol, как это
public string TextBoxText
{
get
{
return textBox1.Text;
}
set
{
textBox1.Text = value;
}
}
Ответ 4
Недавно у меня возникли некоторые проблемы с пользовательским классом:
Пользовательский элемент управления имел общедоступное свойство, имеющее тип пользовательского класса. Дизайнер по умолчанию пытается присвоить ему некоторое значение, поэтому в коде конструктора автоматически добавляется строка userControlThing.CustomClassProperty = null
.
Цель заключалась в том, чтобы обеспечить пользователю контроль над пользовательским классом в любой момент во время запуска программы (чтобы изменить значения, видимые для пользователя). Поскольку часть set {}
не проверяла нулевые значения, возникали различные ошибки.
Решение заключалось в том, чтобы изменить свойство на частное и использовать два общедоступных метода для установки и получения значения. Дизайнер попытается автоматически назначить свойства, но оставляет методы в одиночку.
Ответ 5
Вам нужно сделать общедоступное свойство для richtextbox или выставить другое свойство, которое выполняет задание текста richtextbox, например:
private RichTextBox rtb;
public string RichTextBoxText
{
get
{
return rtb.Text;
}
set
{
rtb.Text = value;
}
}