【发布时间】:2018-04-14 12:28:34
【问题描述】:
我试图通过立即说出我想要什么然后得到什么来避免 XY 问题。 ????
所以,首先,我最小化我的 MainWindow 并通过它的 NotifyIcon ContextMenu 我希望我的 MainWindow 重新出现。
问题:MainWindow 没有出现/显示为 Window,但它在工具栏中显示为 Icon(见图 2)。
代码:
这是 TrayIcon 初始化程序:
private void InitializeTrayIcon()
{
KyactusTrayIcon = new NotifyIcon();
KyactusTrayIcon.Icon = AppIcon;
KyactusTrayIcon.Visible = true;
KyactusTrayIcon.ContextMenu = new ContextMenu(new []
{
new MenuItem("Chiudi", ExitApplication),
new MenuItem("Mostra", ShowMainWindow),
});
ShowNotification(@"Ciao " + Globals.CurrentUser.Name + @"!", @"Benvenuto su Kyactus");
}
这是负责显示最小化主窗口的代表(根本不工作):
private void ShowMainWindow(object sender, EventArgs e)
{
WindowState = WindowState.Normal;
Topmost = true;
Show();
Activate();
}
这是通过单击 [-] 按钮(即 Hide() 方法)最小化 MainWindow 时发生的情况:
private void MainWindow_OnStateChanged(object sender, EventArgs e)
{
switch (this.WindowState)
{
case WindowState.Maximized:
ShowNotification("Bleah!", "Questo è proprio brutto! :(");
break;
case WindowState.Minimized:
Hide();
ShowNotification("Avviso", "L'applicazione è ora minimizzata qui");
break;
case WindowState.Normal:
break;
}
}
第一步。点击[-]时会调用MainWindow_OnStateChanged方法:
第二步。窗口消失(ok),托盘图标出现(ok)。然后我点击“Mostra”(翻译为“Show”),将调用 ShowMainWindow 委托
第三步。这是最后一步,也就是我没想到的。 MainWindos 作为工具栏中的图标“存在”。但我不能把它看作一个窗口。
请注意,当我通过单击 [X] 而不是 [-] 关闭窗口时,我没有这个问题。所以,我的怀疑是 MainWindow 的 Window.State。我试图将它实现 WindowState.Normal 恢复到 ShowMainWindow,但没有。
更新:如果在 ShowMainWindow 方法中使用 WindowState.Maximized, 我可以再次看到窗口,但它被最大化了,这很糟糕。
【问题讨论】:
-
你在哪里使用
WindowState.Maximized? -
在 ShowMainWindow 方法中。我更新了问题。现在 Maximixe 都不起作用了。