0

WPF のバグだと思われるものを回避する方法を探しています。これは、問題の最も単純な例です。この場合、明らかに Window.Topmost の目的を無効にしますが、問題を非常に明確にします。System.Windows.Window を実装する場合:

    protected override void OnDeactivated(EventArgs e) {
        this.Topmost = false;
        base.OnDeactivated(e);
    }

これは、ウィンドウまたはそのコンテンツが、新しくアクティブ化された別のアプリケーションの上に描画し続けることを確実に防止するものではありません。たとえば、メモ帳のテキスト領域をクリックすると、WPF ウィンドウがメモ帳の上に描画されます。メモ帳の上部をクリックすると (これは私が試した他のほとんどのアプリケーションで一般的です)、MOUSEUP が発生するまで WPF ウィンドウが描画されます。MOUSEDOWN を繰り返し実行できますが、MOUSEUP がすぐに後ろに来ない限り、ウィンドウは一番上にとどまります。ただし、どのアプリケーションのどこをクリックしたかによって、または別のアプリケーションをクリックした場合に、そのアプリケーションの上に描画されない場合に、確実に後ろに描画される状況がいくつかあります。

注:実際に私がやろうとしているのは、Windowsフォームに「くっつく」透明なオーバーレイを使用することです。したがって、その場合、ユーザーがフォームを操作している間、99% の時間で既に非アクティブ化されています。ウィンドウの TopMost を確実にオフにできないため、アプリケーションの非透過部分が他のアプリケーションの上に浮かび続けます。ウィンドウのレンダリングを強制しても、何も変わりません。

添付のスクリーンショットは、2 番目のアプリケーションをクリックしてもバグが再発しないことを示していますが、最初のウィンドウの上にとどまります (赤い部分は私のアプリケーションのものです)。

Topmost==false で挟まれたウィンドウのスナップショット

4

0 に答える 0