我想通过使一些表格无模式来使我的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.
所以在我的应用程序中,我倾向于动态创建表单的新实例,然后使用Form.Show()来显示它们(非模态).
private void test_click(object sender, EventArgs e)
{
var form = new myForm();
form.Show();
}
Run Code Online (Sandbox Code Playgroud)
但是,Code Cracker告诉我应该处理这些表格.所以,我用"使用"语句包装它们,但随后它们在打开后立即关闭.
using (var form = new myForm())
{
form.Show();
}
Run Code Online (Sandbox Code Playgroud)
我不想使用Form.ShowDialog(),因为在少数情况下我打开只显示报告的新窗口; 我不需要它们是模态的.