.net - 如何在winforms的设计模式下执行代码

标签 .net vb.net winforms windows-forms-designer designer

当我在设计器中打开 winform 时,我想要执行代码。特别是,我希望设计器自动将工作表单的大小调整为屏幕的百分比。与此类似:

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

除了手动修改initializecomponant例程之外,还必须有一种方法……无论如何,这都是一个坏主意,而且我不想将每个受祝福的形式中的大小属性设置为静态值

感谢您的帮助(VB.NET)

最佳答案

作为在表单设计模式下运行代码的选项,您可以将代码放在表单的基类中。

您放入表单基类中的代码将在继承表单的设计模式下运行。因此,如果您想在表单的设计模式下运行代码,您可以创建一个基本表单并从该表单继承。然后将您的代码放入基本表单的方法中。

示例

  1. 添加新项目并选择一个表单并将名称设置为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 作为基本表单。

关于.net - 如何在winforms的设计模式下执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54844604/

相关文章:

c# - 如何从后面的 aspx 代码中的通用主体中获取自定义数据?

c# - 使用户控件显示在窗体边界之外

c# - C# Windows 应用程序可以使用 oAuth 吗?

.net - 如何在关闭 xcool 窗口窗体时停止关闭整个应用程序

c# - 如何概括从逗号分隔值中删除 ""或 ' '

c# - 实现接口(interface)的开销

c# - 从不同程序集加载合并的 ResourceDictionary 失败

vb.net - CellEndEdit 之后的 DataGridView SetFocus

c# - 强制 .NET 编写原生波斯数字而不是美国格式

c - 将 C 代码升级到 VB.NET - union 结构