【发布时间】:2011-02-20 18:38:00
【问题描述】:
我是 .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() 完成(表单关闭)之前不会执行。因此,由于在移动到新表单时一遍又一遍地调用该方法,上述情况可能导致表单未正确处理的泄漏。另一种方法是在显示新表单之前先处理旧表单,但是,然后我的应用程序会在正在处理的旧表单和正在呈现的新表单之间临时呈现其他内容(无论表单背后的内容):/应该怎么做做这样的事情?
非常感谢。
【问题讨论】:
标签: c# .net windows-mobile