Makeln TopMost in VB.NET
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.
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