Форма включена в событии 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, и это моя форма FormClosing в AddProduct

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 в моей главной форме, когда она вызывает форму Add Product, и enabled = true, когда я закрываю форму Add Product, но enabled = true не будет работать.

Когда я закрываю свой продукт Add, он только скрывает форму Add Product, но не включает основную форму, основная форма все еще не включена. Что-то не так с моим кодом?

2 ответа

Решение

Эта строка - ваша проблема:

Dim frmMainIndex As New FormMainIndex

Вы создаете новый экземплярFormMainIndex, Всякий раз, когда вы используете New Ключевое слово вы создаете совершенно новый и независимый объект. frmMainIndex это совершенно другая форма, чем первая, которая открыла FormAddProduct форма.

Так как вы установили FormAddProductвладелец вашего FormMainIndex форма, просто установите владельца Enabled вместо свойства true:

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

Кроме того, ваш Me.Hide() Вызов не имеет никакого смысла, так как ваша форма будет закрыта.

Поскольку вы создали новый экземпляр FormMainIndex, frmMainIndex.Enabled был применен к этому новому экземпляру, а не к тому, который создал ваш FormAddProduct. Почему бы вам не показать свой FormAddProduct в виде диалога. как это

Dim frmAddProduct As New FormAddProduct
frmAddProduct.ShowDialog(Me)
Другие вопросы по тегам