题
我有一些掌上电脑的应用程序,我用在这里所述的具有一个严重的问题: https://stackoverflow.com/questions / 472598 。而寻找一个解决方案,我试图在main()一些实际上是相当笨代码:
[MTAThread]
static void Main()
{
Application.Run(new Tasks());
Application.Exit();
}
和出口上设置断点。如果我只是运行应用程序,然后关闭到达断点窗口。如果我运行该应用程序,然后打开另一个窗口:
private void questButton_Click(object sender, EventArgs e)
{
QuestionnairesWindow questWindow = new QuestionnairesWindow();
questWindow.Show();
this.Hide();
}
和然后回来从它到初始窗口:
private void backButton_Click(object sender, EventArgs e)
{
Tasks tasksWindow = new Tasks();
tasksWindow.Show();
this.Close();
}
和关闭的初始一个相同的方式,在第一时间,是从来没有达到Apllication.exit()码和我有一种印象,即该应用程序不是真正关闭(我不能再次打开)。抱歉,如果该描述是复杂的
编辑:问题是 - 任何想法为什么会表现不同。
?解决方案
new Tasks()
在Main()
不与Tasks tasksWindow = new Tasks();
同一对象
您有任务的2个对象,所以关闭第二,第一是仍然存在并且不灭。您需要传递给QuestionnairesWindow
电流Tasks
的参考。
您可以做到这一点额外的QuestionnairesWindow
构造:
private Tasks tasks;
public QuestionnairesWindow(Tasks t)
{
this.tasks = t;
}
使用:
new QuestionnairesWindow(this).Show(); // where this = current `Tasks` created in `Main`
其他提示
此线似乎是问题:
Tasks tasksWindow = new Tasks();
如果我正确地理解你的代码,在你的backButton_Click,你要创建一个新您的任务形式的情况下,显示您最初隐瞒了一个isntead。这意味着应用程序永远不会终止,因为还有一个窗口开放的,但隐藏。
你可能想要做的是通过任务形成参考QuestionnairesWindow形式。
您的问题是,在backButton_Click要创建一个新任务窗口的实例。原来的任务窗口仍然在运行,它只是隐藏。我怀疑你需要传递给原始任务的参考组建成QuestionnairesWindow,因此可以选择再次证明这一点。
您要么需要在你的QuestionnairesWindow,您可以设置哪些任务形式造成QuestionnairesWindow打开添加公共/内部方法。你之前调用questButton_Click此方法的此强>参照主叫this.Hide()。该参考文献将被存储在QuestionnairesWindow内的专用变量。
然后,在backButton_Click,可以使用此专用变量,调用该.Show()方法,来显示的母体形式。