vb.net – 在哪里可以控制winform右上角的“X”关闭按钮的行为?

我正在冒险使我的VB.NET应用程序更好地使用,通过制作一些形式无模式.

我想我已经弄清楚如何使用dlg.Show()和dlg.Hide()而不是调用dlg.ShowDialog().我的主要应用程序窗体中有一个我的无模式对话框的实例:

Public theModelessDialog As New dlgModeless

要启动我调用的无模式对话框

theModelessDialog.Show()

并且在我的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 was unhandled. Cannot access a disposed object.

我觉得我最喜欢的方式,但我不知道如何做以下任一:

>隐藏“X”按钮
抓住事件,所以我不处理对象(只是对待它,就像我点击取消)

有任何想法吗?

此对话框的类是System.Windows.Forms.Form.

使用Me.Close()隐藏窗体.要打开它,请使用以下代码段:
If theModelessDialog.Isdisposed Then
    theModelessDialog = New dlgModeless
End If
dlgModeless.Show()

如果这是保存数据,那么您需要确定一些存储方式(可能是以静态变量/形式).这是做你想要实现的正确方法.

如果我的VB已经关闭了,那么你也必须原谅我,已经有一段时间了.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...