基本上我有一个登录窗口,一旦用户登录就会关闭并显示另一个窗口,现在我只是隐藏它(Form.Hide())但是我不想采取不必要的系统资源而且我不喜欢我已经登录后不需要登录窗口。
这是我执行操作的代码片段:
MainWindow w = new MainWindow();
TimeRegisterApI.Instance.Windows.Add(w.Text,w);
TimeRegisterApI.Instance.Windows[w.Text].Show();
this.Dispose();
Windows是一种字典,用于存储表单的引用及其标题作为键。 TimeRegisterApi是一个单身人士。 基本上发生的事情是我的应用程序在我登录后退出而不是仅仅处理登录窗口,当我想要它处理时(关闭并转到垃圾收集器。)
我知道将标题作为密钥可能会导致重复的密钥输入,但在我目前的设计中它没有问题。
答案 0 :(得分:1)
您必须将窗口窗体登录为模式窗体,父窗口是您的主窗体 它会让你等待答案(如saveialog)并返回主窗口表格) 这是你的主要形式,所以你存在
答案 1 :(得分:0)
好吧我修复了问题,基本上会发生什么事情,当program.cs
application.run(window)
处运行的窗口被处理掉时,它会关闭程序,因为它是主窗口,我认为这是可能的在这个窗口的dispose事件上做一个e.cancel
,但是我通过在这样的新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);
}
}