2

一定期間上にある必要があるフォームがあり、その後、通常は他のウィンドウの後ろに設定できます。Me.TopMost設定以外に何かすることはありますTrueFalse?うまくいかないようなので質問します。

4

1 に答える 1

4

問題はありません。次のコード (C# で申し訳ありませんが、私が現在いるところでは VB.NET 環境を利用できません) は に設定TopMostされtrue、5 秒間待機しTopMostてから に戻りfalseます。

private void MakeMeTopmostForAWhile()
{
    this.TopMost = true;
    ThreadPool.QueueUserWorkItem(state =>
    {
        Thread.Sleep(5000);
        this.Invoke((Action)delegate { this.TopMost = false; });
    });
}

これは、ウィンドウの Z オーダーにすぐには影響しないことに注意してください。が にTopMost設定されているfalse場合、ウィンドウは引き続き他のウィンドウの上に表示されます。ウィンドウが最上位にある別のウィンドウの上にある場合、他の最上位のウィンドウが覆われないように移動しますが、最上位以外の他のウィンドウの上に残ります。

更新
ここにVB.NETの上記のコードがあります(自動変換、テストされていません):

Private Sub MakeMeTopmostForAWhile()
    Me.TopMost = True
    ThreadPool.QueueUserWorkItem(Function(state) Do
        Thread.Sleep(5000)
        Me.Invoke(DirectCast(Function() Do
            Me.TopMost = False
        End Function, Action))
    End Function)
End Sub
于 2009-11-11T15:47:15.720 に答える