VB.NET 调整以编程方式创建的表单的大小

VB.NET Resize programmatically created form

我有以编程方式创建的表单。

Public声明:

Public Form As Form

此代码在 sub

    Dim Form As New Form With
    {
        .BackColor = Color.FromArgb(45, 45, 58),
        .StartPosition = FormStartPosition.CenterScreen,
        .FormBorderStyle = FormBorderStyle.None,
        .Size = New Size(546, 244)
    }

当我尝试在运行时通过单击按钮调整此表单的大小时:

Form.Size = New Size(546, 455)

Form.Refresh()

没用。

编辑: 我试图将 'Form' 重命名为 'MyForm' 但没有任何反应。

EDIT2:我正在创建我的自定义消息框。我已经创建了模块,这个模块里面是 sub CreateMsgBox(text As String, type As MsgType, Optional ex As String = "") 并且在这个 sub 中是生成我的表单的代码。在这段代码之后,很少 AddHandler 带有事件的语句 Button_Click() btw 按钮也以编程方式创建。我尝试将 Form.Size 更改为 Form.Location 以验证按钮事件是否有效,但位置仅适用于大小。

PS:Ahmed Abdelhameed 如果我将 MyForm As New Form With 替换为 MyForm = New Form With

  1. 它破坏了我移动表单的代码。

  2. 表单仍未调整大小。

我不能使用Me,因为我没有class。 任何想法如何去做? 提前致谢。

这里的问题是您有一个对表单的 class 级别引用,但是当您实例化它时,您正在创建一个具有相同名称的局部变量,该变量隐藏了 class 级别一。我已经使用表单的变量名称 _window 编写了您的代码,以避免将其与以下任何其他内容混淆

Private _window As Form

创建时,我有这个代码...

_window = New Form With
{
    .BackColor = Color.FromArgb(45, 45, 58),
    .StartPosition = FormStartPosition.CenterScreen,
    .FormBorderStyle = FormBorderStyle.None,
    .Size = New Size(546, 244)
}
_window.Show() 

然后在调整它的大小时,在带有 运行 代码的表单中单击按钮,我这样做...

_window.Size = New Size(546, 455)

我没有使用刷新,创建的表单正在按预期调整大小。