2009-09-03 91 views
0

我正在VB.NET中开发一个WinForms应用程序,处理样式数据集,当用户点击另一个集合的标签时,它会通过对话框提示“您将离开此样式预设以编辑另一个样式。在这一个吗?[是] [否]“VB.NET:如何在这种情况下关闭并重新打开对话框?

但是,我面临的问题是,当用户单击任一选项,并且对话框关闭,一切都必须刷新,并重新加载窗体似乎是不错的选择。

我试图把一个公共子模块,这是否对:

Public Sub CloseOpenStyleDlg() 
    KeepOrDiscardPrompt.Close() 
    StylesDlg.Close() 
    StylesDlg.ShowDialog() 
End Sub 

但只要该子从提示调用时,它的应用程序崩溃。 (在调试时不显示错误,只是崩溃)我应该如何从给定的对话框关闭对话框,它是父对象,并重新打开它的父对象? (这会触发父级的所有Dialog_Load()代码)

在此先感谢! :)

回答

1

您需要再次实例化对话框。如果我拿你的代码为例:

Public Sub CloseOpenStyleDlg() 
    KeepOrDiscardPrompt.Close() 
    StylesDlg.Close() 
    StylesDlg = new StylesDlg() 
    StylesDlg.ShowDialog() 
End Sub 
+0

Thanks =)我重新安排了Form_Load()之外的代码,从现在开始,我几乎总是遵守最佳做法(严重写作的代码是如此地狱!),但你的榜样解决了我对如何重新打开表单,所以选择了=) – 2009-09-04 00:11:33

0

当表单关闭时,关闭对象内创建的所有资源并处理表单。

如果您想重新使用Window实例,请改用StylesDialog.Hide()函数。

+0

但是,hide会再次调用Form_Load()事件吗?直觉上,我认为这是一种让它看不见但没有关闭的东西。 – 2009-09-03 22:15:15

+0

我没有测试它,但我想当你再次调用Show时,Form_Load()不会被调用。 – 2009-09-03 22:51:03

+0

隐藏然后显示表单不会引发Load事件。如果你有需要再次调用的初始化代码,它可以从Form_Load方法中移除并放入另一个方法中并显式调用。 – snarf 2009-09-03 22:53:10

相关问题