在 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()
调用没有任何意义,因为您的表单即将关闭。
我先给你看我的代码:
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()
调用没有任何意义,因为您的表单即将关闭。