最前面ウィンドウ大好きでいろんなプログラム言語で書いてみていたんですが、C#のフォームでプロパティにTopMost = true;と指定しただけだと、なぜか時々、最前面表示が効かないことがあるんです。
んで「プロパティにTopMost = true;と指定」ってどういうことか考えてみると、フォームのコンストラクタ実行時にフォーム.Designer.cs の InitializeComponent() を実行してその中で指定してる、ってことなんですよね。
このタイミングでは早すぎてフォームを完全に表示しきる前にプロパティ指定をして結果的に空振りすることがあるのではないか…と妄想してみました。
なのでもう少し遅いタイミングでこの指定を実行してはどうかと。
と思って色々調べてて見つけたページ
Windows フォームのイベントの順序 | Microsoft Docs
これを見て、そうか、Form_Shownというイベントがあるのかー、と思ってイベントハンドラを追加してその中で指定するようにしたら、最前面表示が効かない不具合は、ほぼ起こらなくなりました。