在 FormClosing 事件中启用的表单不​​起作用

Form Enabled in FormClosing Event Not Working

我先给你看我的代码:

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

因此,我在调用“添加产品”表单时在主表单中设置了 enabled = false,在关闭“添加产品”表单时设置了 enabled = true,但 enabled = true 将不起作用。

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

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

Dim frmAddProduct As New FormAddProduct
frmAddProduct.ShowDialog(Me)

这一行是你的问题:

Dim frmMainIndex As New FormMainIndex

您正在实例化一个 new FormMainIndex。每当您使用 New keyword 时,您都在创建一个全新的独立对象。 frmMainIndex 与第一个打开您的 FormAddProduct 表单的表单完全不同。

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

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

此外,您的 Me.Hide() 调用没有任何意义,因为您的表单即将关闭。