Как выполнить код в режиме конструктора для winforms - PullRequest
0 голосов
/ 23 февраля 2019

I ХОЧУ , чтобы выполнить код при открытии winform в конструкторе.В частности, я хочу, чтобы дизайнер автоматически определял размер рабочей формы в процентах от моего экрана.примерно так:

pForm.Size = New Drawing.Size(MyScreen.WorkingArea.Width * 0.75, MyScreen.WorkingArea.Height * 0.75)

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

Спасибо за любую помощь (VB.NET)

1 Ответ

0 голосов
/ 23 февраля 2019

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

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

Пример

  1. Добавить новый элемент и выберите Form и установите имя на MyBaseForm.
  2. Вставьте следующий код в MyBaseForm.vb:

    Imports System.ComponentModel
    Public Class MyBaseForm
        Protected Overrides Sub OnSizeChanged(e As EventArgs)
            If DesignMode Then
                Dim s = New Size(My.Computer.Screen.WorkingArea.Width * 0.75,
                                 My.Computer.Screen.WorkingArea.Height * 0.75)
                TypeDescriptor.GetProperties(Me)("Size").SetValue(Me, s)
            End If
            MyBase.OnSizeChanged(e)
        End Sub
    End Class
    
  3. Создайте проект.
  4. Добавьте новый элемент и выберите InheritedForm и выберите MyBaseForm в качестве базовой формы.
...