私のアプリケーションにはトレイ アイコンがあり、ダブルクリックするとアプリケーション ウィンドウが表示または非表示になります。私の問題は、ウィンドウが非表示のときに最小化された状態にある場合、ウィンドウを前面に表示できないように見えることです。
たとえば、ユーザーがアプリケーションを最小化してから、トレイ アイコンをダブルクリックしたとします。アプリケーション ウィンドウが非表示になり、タスクバーから消えます。ユーザーがトレイ アイコンを再度ダブルクリックすると、アプリケーション ウィンドウが表示されます。つまり、最小化された状態から復元され、最前面に表示されます。
以下のコードはまさにそれを行うべきですが、何らかの理由でそうしません:
private void TrayIcon_DoubleClick(object sender, EventArgs e)
{
if (this.Visibility == Visibility.Hidden)
{
this.Visibility = Visibility.Visible;
this.WindowState = WindowState.Normal;
this.Activate();
}
...
}
アプリケーションは最小化されたままになり、最前面には表示されません。Activate()は true を返し、その後TrayIcon_DoubleClick()を呼び出すと、状態が実際にNormalに設定されていることが示されます。