Как получить доступ к свойствам пользовательского элемента управления в C#
-
03-07-2019 - |
Вопрос
Я создал пользовательский элемент управления C# с одним текстовым полем и одним расширенным текстовым полем.
Как я могу получить доступ к свойствам richtextbox вне пользовательского элемента управления.
Например..если я помещу это в форму, как я могу использовать свойство Text в richtextbox???
Спасибо
Решение
Самый чистый способ — предоставить нужные свойства как свойства вашего пользовательского элемента управления, например:
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 в сетке свойств на 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;
}
}