Укажите свойства от базовой формы к унаследованным - PullRequest
2 голосов
/ 19 августа 2011

У меня есть ac # winform, который является шаблоном для всех форм в моем проекте.

Моя проблема заключается в том, как настроить некоторые свойства для элементов управления, которые будут добавлены в унаследованные формы из базовой формы.Например, я хочу, чтобы все текстовые поля, которые будут в формах, имели определенный цвет или вызывали метод расширения.

Прямо сейчас я попробовал простую идею, которая появилась:* Я поместил этот код в событие загрузки базовой формы, но безуспешно.Я попытался изменить модификаторы с унаследованной формы на защищенные, но безуспешно.

Есть ли решение этой проблемы?Или я обязан поместить этот код во все мои формы, которые наследуют baseForm?

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

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

Если иначе, форма не нужно требовать, чтобы «знать» о свойствах элементов управления, которые он содержит.Он не должен знать или заботиться о том, что он содержит ComboBox, TextBox или ListView.

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

Так, например, ваш пользовательский класс TextBox может выглядеть следующим образом:

public class CustomTextBox : TextBox    // inherit from TextBox
{
    public CustomTextBox()
    {
        // default constructor
    }

    // other logic...

}
0 голосов
/ 19 августа 2011

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

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