Элементы управления Windows .Net - Создание шаблонов свойств - PullRequest
2 голосов
/ 09 января 2009

Предположим, что все элементы управления текстового поля в моем приложении .Net Windows, созданные путем перетаскивания элемента управления TextBox в редактор форм, должны иметь следующие свойства по умолчанию (некоторые экземпляры текстового поля могут переопределять эти свойства):

Выровнять текст: по центру
Изменить размер: согласно содержанию
Док: слева, сверху и справа

Теперь становится громоздкой и скучной задачей вручную устанавливать эти свойства каждый раз, когда это необходимо. Есть ли способ, по которому эти свойства могут быть установлены по умолчанию на «уровне сборки». Я знаю, что пользовательские элементы управления решат проблему, но я считаю, что это дорогостоящее решение, и я думаю, что должно быть более простое и элегантное решение этой проблемы. Спасибо

Ответы [ 3 ]

1 голос
/ 09 января 2009

У вас есть два варианта здесь.

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

Другой способ - наследовать рассматриваемый элемент управления textbox и изменить свойства по своему вкусу в его конструкторе (и, возможно, скрыть свойства, чтобы выставить различные значения по умолчанию для таблицы свойств). Чтобы сделать элемент управления доступным в конструкторе форм, его необходимо создать в отдельном проекте, из которого он должен использоваться, а затем ссылаться на него в первом проекте.

0 голосов
/ 09 января 2009

В моем проекте у меня аналогичная потребность. Что я сделал, так это прослушал событие ControlAdded и проверил, что если этот элемент управления имеет требуемый тип ... я установил эти свойства.

Чтобы это было действительно автоматически ... вы должны поместить такую ​​логику в базовый класс форм. В моем случае ВСЕ мои Формы наследуются от базовой с логикой рисования градиентного фона и устанавливают стандартные свойства для моих форм (Значок, границы и т. Д.)

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

Private Sub FormBase_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles MyBase.ControlAdded
        If e.Control.GetType().ToString = "CommonUI.MGButton" Then
            Dim boton As CommonUI.MGButton = CType(e.Control, CommonUI.MGButton)
            With boton
                If CType(.Tag, String) <> "OverrideDefaults" Then
                    .ColorBorde = System.Drawing.Color.Black
                    .ColorBordeFocus = System.Drawing.Color.Transparent
                    .ColorFinal = System.Drawing.Color.NavajoWhite
                    .ColorFinalDisabled = System.Drawing.Color.WhiteSmoke
                    .ColorFinalOver = System.Drawing.Color.Sienna
                    .ColorInicial = System.Drawing.Color.Peru
                    .ColorInicialDisabled = System.Drawing.Color.SeaShell
                    .ColorInicialOver = System.Drawing.Color.Sienna
                End If
            End With       
        End If
    End Sub
0 голосов
/ 09 января 2009

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

Пример:

   class Class1:TextBox{
        public Class1():base(){
            this.TextAlign = HorizontalAlignment.Center;
            this.Dock = DockStyle.Left;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...