【C#/WinForms】DockPanel Suiteでウィンドウ移動時にタスクバーの前にウィンドウを表示しない方法

DockPanel Suite
この記事は約2分で読めます。

ようやく自作エディタに DockPanel Suite の導入が終わった時に、なんか変な挙動をするのに気付きました。

ウィンドウを移動するときに、なぜか全てのウィンドウがタイトルバーの前にくるんですよね。おそらく、ドッキングする箇所全部を表示したいためだと思うんですが、気になって仕方無いんですよね。

実装は終わってから気付いたのですが、元に戻そうかなってとさえ思いました。大袈裟ですね。ってことで直せるかやってみました。

DockPanel Suiteのバージョン

本事象は DockPanel Suite 3.1.0 で発生することを確認しています。

事象

こんな感じにウィンドウを移動するとタスクバーの前にウィンドウが表示されます。対象アプリだけならまだいいのですが、全てのアプリのウィンドウが前に表示されます。

ウィンドウの移動が終わると、またタスクバーの後ろに隠れるんですよね。ウィンドウの移動ってあんまりしないかもしれないのですが、気になって仕方無いです。

修正後はタスクバーの後ろのままにしたいです。

原因

実装よりも調査にめっちゃ時間がかりました。ウィンドウのタイトルバーをドラッグするイベントで、分離したウィンドウを表示する際、表示する領域を全画面にしていることが原因でした。

修正方法

下記ソースの表示領域をディスプレイの作業領域(タスクバーなどを除いた領域)にすれば解消しました。

DockPanel.DockDragHandler.cs

public override void Show(bool bActivate) {
    base.Show(bActivate);
    // コメントアウト
    // Bounds = SystemInformation.VirtualScreen;
    // 作業領域に変更する
    Bounds = Screen.GetWorkingArea(this);
    RefreshChanges();
}

おわりに

Visual Studioもタスクバーの後ろにあるウィンドウは前にくることは無いのでとにかく直せてよかったです。れで、DockPanel Suite の導入は一旦完了です。

コメント

タイトルとURLをコピーしました