我是.NET紧凑框架的新手(也是C#的新手),我在移动应用程序中切换表单时遇到了问题。在高级别,我的应用程序使用多个表单,主要的“应用程序管理器”类执行表单之间的导航/切换。我的计划是按需创建表单,缓存它们并使用简单的隐藏/显示策略。
起初我想在我的主要应用程序类中执行以下操作:
public void switchForm(Form newForm)
{
currentForm.Hide(); // instance member
newForm.Show();
currentForm = newForm;
}
然而,这并没有按计划进行。我试图展示的新表格非常暂时出现,然后消失在我的应用程序的主要形式后面 - 任何想法为什么会发生这种情况?我已经完成了很多关于表单切换的阅读,大多数地方似乎都提到上面的方法就是这样做的。
然后我尝试了以下内容:
public void switchForm(Form newForm)
{
currentForm.Hide(); // instance member
currentForm = newForm;
newForm.ShowDialog();
}
这似乎可以解决问题。不过,我想知道这是正确的方法吗?但是,使用ShowDialog()方法会带来另一个问题。假设我想处理旧表单,如下所示:
public void switchForm(Form newForm)
{
Form oldForm = currentForm;
currentForm = newForm;
newForm.ShowDialog();
oldForm.Dispose();
}
然后我发现oldForm.Dispose()代码在newForm.ShowDialog()完成(表单关闭)之前不会执行。因此,在移动到新形式的同时反复调用该方法时,上述情况可能导致泄漏,形式没有正确设置。另一种方法是在显示新表单之前首先处理旧表单,但是,然后我的应用程序暂时在正在处理的旧表单和正在呈现的新表单之间呈现其他内容(表单后面的任何内容):/应如何处理做这样的事情?
非常感谢。
答案 0 :(得分:2)
尝试this:
public void switchForm(Form newForm)
{
Form oldForm = currentForm
newForm.Show();
currentForm.Hide();
currentForm = newForm;
oldForm.Dispose();
}
答案 1 :(得分:1)
您在项目中创建的每个表单都是一个类
例如:
我创建了一个名为frmExample
的表单,如果要从另一个表单中调用它,则必须执行以下操作:
- 创建您需要的班级(您的表格)的新实例
- 新实例(模态或非模态)
Class frmOther<br>
Dim frmNewForm as New frmExample()<br>
frmNewForm.Show()<br>
End Class