背面で作られたりして悲しいのです
ちょいと覚え書き。
WPFでウインドウをつくった際に、 NotifyIcon
からポップアップメニュー出してウインドウつくったりすると、親無しのウインドウを作ることになりますよね。
で、そうして作ったウインドウはなんだか悲しく背面に出て来たりします。
それを前面に出した状態で作ってしまおうと言う事。
Topmostを使う
結局どうやるかというと、以下のコード。
public static Window MakeKeyAndOrderFront(this Window wnd)
{
if (!wnd.IsVisible)
{
wnd.Show();
}
if (wnd.WindowState == WindowState.Minimized)
{
wnd.WindowState = WindowState.Normal;
}
wnd.Active();
wnd.Topmost = true;
wnd.Topmost = false;
wnd.Focus();
}
重要なのは最後の3行。
- Topmostを使って最前面にする
- 最前面を取り下げる
- フォーカスを取得
最前面を取り下げて(2.)も元に戻る訳ではなく、最前面に居座ったままです。
その状態でフォーカスを当ててやると希望の状態に。