【发布时间】:2021-11-10 00:50:21
【问题描述】:
我正在开发一个 WinForms 应用程序,我试图在关闭时将表单最小化到系统尝试,从系统托盘打开时我想直接转到主应用程序而无需再次登录。 要点是减少进入主应用程序的登录尝试,并且应用程序应该在后台运行,直到帐户持有人退出应用程序并看到登录屏幕。
这就是我的目的
程序.cs
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Splashscreen());
Application.Run(new SignIn());
}
这是我从登录表单导航到主应用程序的方式
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
waitForm.Close();
this.Hide();
//Nothing to do with this system tray problem, just checking for another valid condition
if(condition == true)
{
MainApp mainapp = new MainApp();
mainapp.ShowDialog();
}
this.Close();
}
登录后进入的主应用
private void MainApp_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(500);
this.Hide();
e.Cancel = true;
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show();
notifyIcon1.Visible = false;
WindowState = FormWindowState.Normal;
}
但是,当我这样做时,系统托盘图标消失并且无法转到指定页面。有什么想法或经验来实现这一点?
提前谢谢各位!
【问题讨论】:
-
您需要
SignIn的实例还是在MainApp显示后不再需要? -
@Steeeve 我不需要登录实例,当用户登录时应该显示主应用程序,在最小化到托盘后,主应用程序应该显示登录用户的帐户
-
然后我会将
SignIn表单与MainApp完全分开并更改static Main()以便它显示SignIn with ShowDialog 并且如果登录成功Application.Run(new MainApp()) -
@Steeeve 我需要从登录开始,然后进入 mainapp。怎么可能有两个主要的方法..?
标签: c# winforms system-tray