Я создал пользовательский элемент управления C# с одним текстовым полем и одним полем с расширенным текстом.
Как я могу получить доступ к свойствам richtextbox извне usercontrol.
Например .. если я помещу его в форму, как я могу использовать свойство Text в richtextbox ???
Благодарность





Измените модификатор доступа («Модификаторы») RichTextBox в сетке свойств на Public.
Самый чистый способ - предоставить желаемые свойства как свойства вашего пользовательского элемента управления, например:
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 на другой, вы не сломаете вызывающих / пользователей вашего элемента управления.
В, public bool CheckBoxProperty {get {return checkBox.Checked; } получить {checkBox.Checked = значение; }} get должен быть набором
@ M4N знаете ли вы, как я могу получить доступ к настраиваемым AttachedProperties UserControl? Я создал ImageButton с двумя ImageSource (нормальный и нажатый), и у меня есть UserControl с ImageButton. Как я могу получить доступ к этому свойству? <Button x:Name = "ImgBtn" Style = "{StaticResource ImgBtn}" local:ImgBtn.SrcNormal = "btn_normal.png"/> На странице, которая реализует UserControl, я хочу изменить SrcNormal моего ImgBtn.
Добавьте свойство в пользовательский элемент управления следующим образом
public string TextBoxText
{
get
{
return textBox1.Text;
}
set
{
textBox1.Text = value;
}
}
Вам нужно сделать общедоступное свойство для richtextbox или предоставить какое-либо другое свойство, которое выполняет задание по установке текста richtextbox, например:
private RichTextBox rtb;
public string RichTextBoxText
{
get
{
return rtb.Text;
}
set
{
rtb.Text = value;
}
}
Недавно у меня возникли проблемы с этим с настраиваемым классом:
Пользовательский элемент управления имел общедоступное свойство настраиваемого типа. Дизайнер по умолчанию пытается присвоить ему какое-то значение, поэтому в код конструктора автоматически добавлялась строка userControlThing.CustomClassProperty = null.
Намерение состояло в том, чтобы иметь возможность предоставить пользовательскому элементу управления настраиваемый класс в любой момент во время выполнения программы (для изменения значений, видимых пользователю). Поскольку часть set {} не проверяла нулевые значения, возникали различные ошибки.
Решением было изменить свойство на частное и использовать два общедоступных метода для установки и получения значения. Дизайнер попытается автоматически назначить свойства, но не трогает методы.
Это, вероятно, не лучшая идея, поскольку она позволяет потребителю элемента управления иметь полный контроль над RichTextBox. Вы должны показывать только те свойства, которые потребитель должен иметь возможность изменять.