【问题标题】:Form Enabled in FormClosing Event Not WorkingFormClosing 事件中启用的表单不​​起作用
【发布时间】:2016-09-23 07:25:55
【问题描述】:

我先给你看我的代码:

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 表单的 Main Form,这是我在 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 不起作用。

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

【问题讨论】:

    标签: vb.net formclosing


    【解决方案1】:

    这一行是你的问题:

    Dim frmMainIndex As New FormMainIndex
    

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      Dim frmAddProduct As New FormAddProduct
      frmAddProduct.ShowDialog(Me)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多