2010-02-05 5 views
3

Надеюсь, я заявляю, что правильно. У меня есть приложение WinForm (3.5), которое имеет 1 форму, которая разбита на два региона. 1 - это Навигация, а другой - Панель, это Контент. Вы выбираете, что хотите в разделе «Порты навигации», то есть демографические данные, а затем внедряете элемент UserControl, содержащий все элементы управления демографической информацией в панели.Должны ли элементы управления пользовательским элементом управления быть защищены свойствами?

Что я спрашиваю, если каждый пользовательский контроль должен иметь Property для каждого Control на нем. Пример: ucDemographics имеет текстовое поле с именем txtCity. Должен ли быть Property для хранения valuetxtCity и разрешить моей форме и другим элементам управления пользователями доступ к ней?

Это общепринятая «Лучшая практика»?

Если нет, что такое?

ответ

5

Это зависит от того, чего вы хотите достичь с помощью UserControl.

Обычно вы не подвергали бы txtCity, потому что вызывающий пользователь мог манипулировать всем содержимым текстового поля. В большинстве случаев, вы подвергнете только текущий текст а-ля

public string CityText 
{ 
    get { return this.txtCity.Text; } 
} 
+0

Я вижу, так что обычно вы используете только Get, а не набор или просто не публичный набор? Таким образом, пользовательский элемент управления может использовать его для установки переменной. Я пропустил пункт? –

+0

Зависит от цели вашего UserControl. Если вы хотите, чтобы форма хоста обновляла текст, выставляйте публичный набор, иначе нет. –

2

Нет, это на самом деле не лучшая практика. Целью пользовательского контроля является создание нового элемента управления с его собственным поведением. Вы должны иметь «несколько» свойств, методов и событий, которые являются общедоступными и позволяют форме взаимодействовать с новым элементом управления. Если вы обнаружите, что единственный хороший способ работать с ним - разоблачить его составные элементы управления, вам лучше не использовать UserControl, а просто поместить элементы управления в форму напрямую.

Смежные вопросы