0

基本上我有一个登录窗口,一旦用户登录并显示另一个窗口,它应该关闭,现在我只是隐藏它(Form.Hide())但是我不希望占用不必要的系统资源,我不需要我已经登录后的登录窗口。

这是我执行操作的代码片段:

MainWindow w = new MainWindow();
        TimeRegisterApI.Instance.Windows.Add(w.Text,w);
        TimeRegisterApI.Instance.Windows[w.Text].Show();
        this.Dispose();

Windows 是一个字典,它以标题为键存储表单的引用。TimeRegisterApi 是一个单例。基本上发生的情况是我的应用程序在我登录后退出,而不是在我希望它处理时退出登录窗口(关闭并转到垃圾收集器。)

我知道将标题作为键可能会导致重复的键条目,但在我目前的设计中没问题。

4

2 回答 2

1

您必须让您的窗口表单登录为模态表单,父表单是您的主表单,它将允许您等待答案(如保存对话框)并返回主窗口表单)这是您的主表单,因此您存在

于 2012-08-29T09:39:09.230 回答
0

好的,我解决了问题,基本上发生的情况是,当从program.csat运行的窗口被释放时application.run(window),它会关闭程序,因为它是主窗口,我认为可以e.cancel对此窗口的 dispose 事件进行处理,但是我通过像这样在新窗口中运行窗口解决了这个问题application.run

来自program.cs,相关行

 static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new LoginWindow());
        start();
    }

 public static void start()
    {
        if (TimeRegisterApI.isLoggedIn())
        {
            MainWindow w = new MainWindow();


            Application.Run(w);
        }
    }
于 2012-09-06T09:49:28.527 回答