Я решаюсь сделать приложение VB.NET немного более удобным, сделав некоторые формы немодальными.
Мне кажется, я понял, как использовать dlg.Show () и dlg.Hide () вместо вызова dlg.ShowDialog (). У меня есть экземпляр моего немодального диалога в основной форме приложения:
Public theModelessDialog As New dlgModeless
Для запуска немодального диалога я звоню
theModelessDialog.Show()
и в обработчиках кнопок OK и Отмена в dlgModeless
у меня есть
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Hide()
End Sub
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Hide()
End Sub
и это, кажется, работает нормально.
Кнопка «X» в правом верхнем углу меня все же получает. Когда я закрываю форму с помощью этой кнопки, а затем пытаюсь снова открыть форму, я получаю
Исключение ObjectDisposedException не обработано. Невозможно получить доступ к удаленному объекту.
Мне кажется, что я в основном там, но не могу понять, как сделать одно из следующих действий:
- Скрыть эту кнопку "X"
- Перехватите событие, чтобы я не избавлялся от объекта (просто обработайте его, как если бы я нажал Отмена)
Есть идеи?
Класс этого диалога System.Windows.Forms.Form
.