我有一些掌上电脑的应用程序,我用在这里所述的具有一个严重的问题: 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()方法,来显示的母体形式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top