標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

(.NET検証)FolderBrowserDialogを連続してShowDialogすると2回目以降は最前面に表示されない

件名そのまま。Microsoft のページは、いつ行方不明になるか分からないので、バックアップとして記事をあげておく。

この Q&A ページの要旨は以下のとおり:

  1. 1回目のフォルダー選択ウインドウを閉じた時点で、システムが他所のウインドウをアクティベートしてしまうため、2回目のフォルダー選択ウインドウがそれよりも背後になってしまう。
  2. 対応策としては1回目のフォルダ―選択ウインドウを閉じた後に、親ウインドウをアクティベートして、DoEvent で処理させればよいらしい。
  3. だが、親ダイアログの Load イベント中でフォルダー選択ダイアログを表示させている場合、その中でまだ開かれていない親ウインドウをアクティベートすることはできない。
  4. そこで、Load イベントでやっていたことを Shown イベントで行うようにした上で、親ウインドウ(というか自ウインドウか)のアクティベートを行うようにする。

実際やってみたところ、フォルダー選択ダイアログ2つを表示する場所を Loadイベントから Shown イベント中に移動させただけで直ってしまった。まぁ、親ウインドウをプログラムではなく、システムがアクティベートするから直ったというところだろうか。