J'ai un formulaire qui doit être en haut pendant un certain temps, puis peut être placé derrière d'autres fenêtres normalement. Y a-t-il quelque chose en plus à régler Me.TopMost
à True
ou False
qui doit être fait? Je demande parce que ça ne semble pas fonctionner.Toggling TopMost dans VB.NET
Répondre
Il ne devrait pas présenter de problème. Le code suivant (C#, désolé pour cela, aucun environnement VB.NET disponible où je suis maintenant) définit TopMost
à true
, attend 5 secondes, puis bascule TopMost
Retour à false
.
private void MakeMeTopmostForAWhile()
{
this.TopMost = true;
ThreadPool.QueueUserWorkItem(state =>
{
Thread.Sleep(5000);
this.Invoke((Action)delegate { this.TopMost = false; });
});
}
Notez que cela n'affecte pas immédiatement l'ordre Z de la fenêtre; Lorsque TopMost
est défini sur false
, la fenêtre sera toujours au-dessus des autres fenêtres. Si la fenêtre est au-dessus d'une autre fenêtre qui est aussi la plus haute, elle se déplacera pour que l'autre fenêtre la plus haute ne soit pas couverte, mais elle restera au-dessus des autres fenêtres non supérieures.
Mise à jour
Voici le code ci-dessus dans VB.NET (auto-converted, non testé):
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
Lorsque vous définissez TopMost sur true, cela affecte-t-il immédiatement l'ordre Z? Sens devrait-il aller directement au sommet? – Shawn
@ShawN: il devrait au moins se déplacer devant toute fenêtre non-topmost. Je ne devinerais pas qu'il se déplacerait automatiquement devant les autres fenêtres les plus hautes. Si vous voulez forcer cela, vous pouvez appeler 'Me.BringToFront()'. –
@Shawn: J'ai fait un test rapide et il semble que si vous définissez 'TopMost = True' force la fenêtre vers l'avant, également devant les autres fenêtres qui sont déjà les plus hautes. Le placer à faux semble le déplacer assez pour ne pas couvrir les fenêtres les plus en haut. –
De quelle façon il semble ne pas fonctionner? –