Joh*_*ohn 16 vb.net visual-studio-2005 modeless winforms
我想通过使一些表格无模式来使我的VB.NET应用程序更好用.
我想我已经想出如何使用dlg.Show()和dlg.Hide()而不是调用dlg.ShowDialog().我在我的主申请表中有一个无模式对话框的实例:
Public theModelessDialog As New dlgModeless
Run Code Online (Sandbox Code Playgroud)
启动我打电话的无模式对话框
theModelessDialog.Show()
Run Code Online (Sandbox Code Playgroud)
而确定和取消按钮处理程序中的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
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常.
不过,右上角的"X"按钮让我感到高兴.当我用那个按钮关闭表单时,然后尝试重新打开表单,我明白了
ObjectDisposedException未处理.无法访问已处置的对象.
我觉得我大部分都在那里,但我无法弄清楚如何做以下任何一种情况:
有任何想法吗?
这个对话框的类是System.Windows.Forms.Form.
Mic*_*odd 21
捕获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
Run Code Online (Sandbox Code Playgroud)
用于Me.Close()隐藏表单。要打开它,请使用以下代码片段:
If theModelessDialog.IsDisposed Then
theModelessDialog = New dlgModeless
End If
dlgModeless.Show()
Run Code Online (Sandbox Code Playgroud)
如果这是保存数据,那么您需要找到某种存储数据的方法(可能在表单中的静态变量中)。这是实现您想要实现的目标的正确方法。
如果我的 VB 关闭了,你也必须原谅我,已经有一段时间了。
| 归档时间: |
|
| 查看次数: |
60523 次 |
| 最近记录: |