【发布时间】:2011-09-16 12:02:47
【问题描述】:
我有这个奇怪且不一致的问题。
该应用程序构建在紧凑框架 3.5 中,在 windows mobile 6.5 设备上运行。
应用程序的屏幕流程有点像这样。
MainScreen(始终运行) 屏幕1 屏幕2 屏幕3
MainsScreen -> Screen1 -> Screen2 -> Screen3 -> MainScreen
当循环完成并且应用程序返回 MainScreen 时,调用 MainScreen.Activated() 并在某个条件下自动启动 Screen1。 代码如下所示:
private void MainScreen_Activated(object sender, EventArgs e)
{
if (Condition)
{
NextScreen();
return;
}
//other code here
}
private void NextScreen()
{
Screen1 formScreen1 = new Screen1 ();
formScreen1 .Show();
}
Screen1 在表单的加载中也有这段代码:
private void Screen1_Load(object sender, System.EventArgs e)
{
if(Condition)
{
NextScreen();
}
}
private void NextScreen()
{
Screen2 formScreen2= new Screen2();
formScreen2.Show();
Close();
}
所以当 Screen1_Load 中的这个条件得到满足时,应用程序会自动启动 Screen2 并关闭它。
在这种特殊情况下,有时会在创建表单后释放 Screen2 上的控件。我知道这一点,因为我实际上可以在屏幕上看到一瞬间的控件。
这个问题也不一致,它不会在确切的场景中一直发生,这让我相信它与时间错误有关。 被释放的控件似乎也是随机选择的,大多数时候它是同一个按钮,但在某些情况下,表单中的列表框被释放了。
请注意,应用程序中没有调用 dispose 控件的代码。
非常感谢任何帮助。谢谢,希望我能很好地解释这个问题。
【问题讨论】:
标签: c# .net-3.5 compact-framework