我正在冒险通过使某些表单无模式来使我的 VB.NET 应用程序更好地使用。
我想我已经弄清楚如何使用 dlg.Show() 和 dlg.Hide() 而不是调用 dlg.ShowDialog()。我的主应用程序表单中有一个无模式对话框的实例:
Public theModelessDialog As New dlgModeless
要启动我调用的无模式对话框
theModelessDialog.Show()
在dlgModeless
我的 OK 和 Cancel 按钮处理程序中
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
。