Win CE 5应用程序中的表单导航

时间:2016-12-22 11:44:55

标签: c# winforms .net-3.5 windows-ce

我正在尝试为运行.Net 3.5 Win CE 5的旧手持设备开发应用程序但是我似乎无法克服基本障碍切换表单!!

我开始使用

Application.Run(new frm_class());

但是在打开任何超过2个表格后,这开始崩溃。

然后我尝试了。

this.hide();
frm_class frm = new frm_class();
frm.show();

然后刚刚结束是一个加载表单的循环 然后我看到有人写了一个非常简单的类来处理这个问题。

    public static void switchForm(Form newForm, Form oldform)
    {
        newForm.Show();
        oldform.Hide();
        oldform.Dispose();
    } 

通过

致电
    frm_class frm = new frm_class();
    switchform(frm,this);

在加载第二个表单时关闭应用程序。

这看起来很愚蠢,但我找不到一种只是通过简单形式导航的方法,即关闭此表单然后打开这个表格,反之亦然!!

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

Application.Run(new frm_class());将启动一个消息循环并使指定的表单可见并等待直到它关闭。一旦指定的表单关闭,消息循环就会终止。 oldform.Dispose();将处置(并关闭)表单,而不是隐藏它。

你的第二个解决方案似乎就是你应该采取的解决方案,不应该循环。如果您再次创建相同的表单,请确保代码不在构造函数或form_load事件中。你能发布围绕这个的代码吗?

您还可以从new frm_class()中删除Application.Run()参数。这将创建一个持续运行的消息循环。别忘了在某个时候打电话给Application.Exit()

您应确保在无参数Application.Run()之前使表单可见,因为此代码块中的执行不会继续,直到您的表单内部调用Application.Exit()

frm_class frm = new frm_class();
frm.Show();
Application.Run();

// Some button or event inside the form should be executing the exit call:
Application.Exit();