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

StackOverflow https://stackoverflow.com/questions/411316

Вопрос

Я создал пользовательский элемент управления 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;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top