我正在尝试为运行.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);
在加载第二个表单时关闭应用程序。
这看起来很愚蠢,但我找不到一种只是通过简单形式导航的方法,即关闭此表单然后打开这个表格,反之亦然!!
任何人都可以帮忙吗?
答案 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();