我试着通过立即说出我想要的东西然后我得到的东西来避免XY问题。
所以,首先,我最小化我的MainWindow和thoroguh它的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");
}
委托负责显示最小化的MainWindow(根本不工作):
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)并显示Tray图标(ok)。然后我点击' Mostra' (翻译为'显示')并且将调用ShowMainWindow委托
第三步。这是最后一步,也就是我没想到的。 MainWindos'生活'作为工具栏中的图标。但我不能把它视为一个窗口。
请注意,当我通过单击[X]而不是[ - ]关闭窗口时,我没有这个问题。所以,我的嫌疑人是MainWindow的Window.State。我试图恢复它将WindowState.Normal实现到ShowMainWindow中,但没有。
更新:如果在ShowMainWindow方法中使用WindowState.Maximized, 我可以再次看到窗口,但它是最大化的,这是坏的和丑陋的。
答案 0 :(得分:1)
简单地说,创建一些类级整数变量并在那里存储高度,宽度和定位值。然后使用它们来恢复窗口的大小:
$.ajax({
type: "POST",
crossDomain: true,
url: "api_gateway_url",
data: JSON.stringify({
"param1": value1,
"param2": value2
}),
答案 1 :(得分:1)
只需在显示窗口时更改操作顺序
private void ShowMainWindow(object sender, EventArgs e)
{
Show();
WindowState = WindowState.Normal;
Topmost = true;
Activate();
}