Frage

ich eine Form haben, die für einen bestimmten Zeitraum an der Spitze zu sein hat, und dann kann in der Regel hinter anderen Fenstern eingestellt werden. Gibt es etwas, zusätzlich zu Einstellung Me.TopMost zu True oder False dass getan werden muss? Ich frage, weil es nicht zu funktionieren scheint.

War es hilfreich?

Lösung

Es sollte kein Problem darstellen. Der folgende Code (C #, sorry dafür, keine Aussage VB.NET Umgebung, wo ich jetzt bin) Sätze TopMost bis true, wartet 5 Sekunden und dann schaltet TopMost zurück zu false.

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

Beachten Sie, dass dies nicht die Z-Reihenfolge des Fensters unmittelbar beeinflusst; wenn TopMost auf false gesetzt ist, wird das Fenster auf den anderen Fenstern sein noch. Wenn das Fenster auf einem anderes Fenster, das auch oberstes ist, wird es bewegen, so dass die anderen obersten Fenster sind nicht abgedeckt, aber es wird auf andere nicht-obersten Fenstern bleiben.

Aktualisieren
Hier ist der obige Code in VB.NET ( Auto-konvertierte , nicht getestet):

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top