Как получить доступ к свойствам пользовательского элемента управления в C#

Я создал пользовательский элемент управления C# с одним текстовым полем и одним полем с расширенным текстом.

Как я могу получить доступ к свойствам richtextbox извне usercontrol.

Например .. если я помещу его в форму, как я могу использовать свойство Text в richtextbox ???

Благодарность

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
20
0
38 514
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Измените модификатор доступа («Модификаторы») RichTextBox в сетке свойств на Public.

Это, вероятно, не лучшая идея, поскольку она позволяет потребителю элемента управления иметь полный контроль над RichTextBox. Вы должны показывать только те свойства, которые потребитель должен иметь возможность изменять.

Ray Booysen 04.01.2009 22:36
Ответ принят как подходящий

Самый чистый способ - предоставить желаемые свойства как свойства вашего пользовательского элемента управления, например:

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 должен быть набором

Jean Azzopardi 24.11.2009 21:15

@ M4N знаете ли вы, как я могу получить доступ к настраиваемым AttachedProperties UserControl? Я создал ImageButton с двумя ImageSource (нормальный и нажатый), и у меня есть UserControl с ImageButton. Как я могу получить доступ к этому свойству? <Button x:Name = "ImgBtn" Style = "{StaticResource ImgBtn}" local:ImgBtn.SrcNormal = "btn_normal.png"/> На странице, которая реализует UserControl, я хочу изменить SrcNormal моего ImgBtn.

Tobias Helbich 20.09.2013 17:54

Добавьте свойство в пользовательский элемент управления следующим образом

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 {} не проверяла нулевые значения, возникали различные ошибки.

Решением было изменить свойство на частное и использовать два общедоступных метода для установки и получения значения. Дизайнер попытается автоматически назначить свойства, но не трогает методы.

Другие вопросы по теме