C# 在.NET compact framework(windows mobile 6)中切换表单

C# 在.NET compact framework(windows mobile 6)中切换表单,c#,.net,windows-mobile,C#,.net,Windows Mobile,我是.NET compact framework的新手(对C#来说也是新手),在移动应用程序中切换表单时遇到了问题。在较高的层次上,我的应用程序使用多个表单,其中有一个主“应用程序管理器”类执行表单之间的导航/切换。我的计划是按需创建表单,缓存它们并使用简单的隐藏/显示策略 首先,我想在我的主应用程序类中执行以下操作: public void switchForm(Form newForm) { currentForm.Hide(); // instance member new

我是.NET compact framework的新手(对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()完成(表单关闭)才执行。因此,在移动到新表单时,由于方法被反复调用,上述情况可能导致表单未正确处理而导致泄漏。另一种方法是在显示新表单之前先处理旧表单,然后我的应用程序在处理的旧表单和呈现的新表单之间临时呈现其他内容(表单后面的内容):/应该如何进行这样的操作

非常感谢。

试试:


您在项目中创建的每个表单都是一个类。
例如:
我创建了一个名为
frmExample
的表单,如果您想从另一个表单调用它,您必须执行以下操作:
-创建所需类(表单)的新实例
-调用新实例(模态或非模态)

Class-frmOther
将frmNewForm作为新frmExample()进行调整
frmNewForm.Show()
末级
欢迎使用堆栈溢出!我对你的帖子做了一些编辑以提高清晰度。谢谢你的第一篇文章。
public void switchForm(Form newForm) 
{ 
    Form oldForm = currentForm
    newForm.Show(); 
    currentForm.Hide();
    currentForm = newForm;
    oldForm.Dispose(); 
} 
Class frmOther<br>
    Dim frmNewForm as New frmExample()<br>
    frmNewForm.Show()<br>
End Class