Подтвердить что ты не робот

Как получить доступ к свойствам usercontrol в С#

Я создал пользовательское управление С# с одним текстовым полем и одним richtextbox.

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

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

спасибо

4b9b3361

Ответ 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;
    }
}