VB.NET Resize以编程方式创建的表单

时间:2018-07-28 13:01:09

标签: vb.net forms resize

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

公开声明:

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:我正在创建我的自定义消息框。我已经创建了模块,并且在该模块内的是子CreateMsgBox(text As String, type As MsgType, Optional ex As String = ""),在这个子代码中是生成我的表单的代码。在此代码之后,还以编程方式创建了一些AddHandler事件,例如Button_Click() btw按钮。我试图将Form.Size更改为Form.Location,以验证按钮事件是否起作用,但位置仅对尺寸无效。

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

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

  2. 表单仍然没有调整大小。

因为我没有课程,所以我不能使用Me。 有什么想法怎么做? 预先感谢。

1 个答案:

答案 0 :(得分:2)

这里的问题是,您有一个对表单的类级别引用,但是在实例化它时,您正在创建一个具有相同名称的局部变量,该局部变量遮蔽了一个类级别。我为表单使用了变量名_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)

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