WPFで、あるウインドウから子ウインドウを開き、子ウインドウが閉じたときに元のウインドウにフォーカスが戻らないという現象に遭遇しました。
この現象をネットを検索してみると以前からある問題のようでいろいろな解決方法が提案されていました。
その中からいくつかの方法を試してみたのですが、残念ながら期待通りに動きませんでした。
自分が試してみてうまく機能した方法を紹介します。
public void ForceActivate() { this.Activate(); System.Threading.Tasks.Task.Run(async () => { await System.Threading.Tasks.Task.Delay(100); Dispatcher.Invoke(() => this.Focus()); }); }
Task.Delayメソッドを使って処理をずらすよう工夫したのが効いているようです。
最初はDispatcher.Invokeメソッドのアクションデリゲート内で定番のTopmostプロパティをtrue、falseの順に設定するなども含めていたのですが、ディレイをかけてFocusメソッドを呼び出すだけで良いようです。
Please give us your valuable comment