FormClosing事件中的表单不起作用

时间:2016-09-23 07:25:55

标签: vb.net formclosing

我先告诉你我的代码:

Private Sub AddProductToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AddProductToolStripMenuItem.Click
    Me.Enabled = False
    Dim frmAddProduct As New FormAddProduct
    frmAddProduct.Show()
    frmAddProduct.Owner = Me
End Sub

这是我调用AddProduct表单的主窗体,这是我在AddProduct中的FormClosing

Private Sub FormAddProduct_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    ButtonReset.PerformClick()
    Lock()
    Me.Owner = Nothing
    Me.Hide()
    Dim frmMainIndex As New FormMainIndex
    frmMainIndex.Enabled = True
End Sub

所以我在调用Add Product表单时在我的主窗体中设置了enabled = false,当我关闭Add Product表单时启用了= true,但enabled = true将不起作用。

当我关闭我的添加产品时,它只隐藏添加产品表单但不启用主表单,主表单仍未启用。我的代码有问题吗?

2 个答案:

答案 0 :(得分:1)

这一行是你的问题:

Dim frmMainIndex As New FormMainIndex

您正在实例化 FormMainIndex。无论何时使用New keyword,您都要创建一个全新且独立的对象。 frmMainIndex与第一个打开FormAddProduct表单的形式完全不同。

由于您已将FormAddProduct所有者设置为FormMainIndex表单,因此只需将所有者的Enabled属性设置为True:< / p>

ButtonReset.PerformClick()
Lock()
Me.Owner.Enabled = True
Me.Owner = Nothing
Me.Hide()

此外,由于您的表单即将关闭,因此Me.Hide()来电没有任何意义。

答案 1 :(得分:0)

因为您创建了FormMainIndex的新实例,所以frmMainIndex.Enabled已应用于此新实例,而不是创建FormAddProduct的实例。为什么不将FormAddProduct显示为对话框。像这样

Dim frmAddProduct As New FormAddProduct
frmAddProduct.ShowDialog(Me)