gpt4 book ai didi

vb.net - 在哪里控制 winform 右上角 "X"关闭按钮的行为?

转载 作者:行者123 更新时间:2023-12-03 01:16:32 28 4
gpt4 key购买 nike

我正在尝试通过将某些表单设为无模式来使我的 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

最佳答案

捕获 FormClosing 事件,如果原因是 UserClosing,则将该事件的 Cancel 设置为 true。

类似于以下内容:

Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _ 
Handles Form1.FormClosing

if e.CloseReason = CloseReason.UserClosing then
e.Cancel = true
Me.Hide()
end if

End Sub

关于vb.net - 在哪里控制 winform 右上角 "X"关闭按钮的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838979/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com