Stratégie pour garder les fenêtres visibles de manière persistante dans .NET
Cet article explore un dilemme courant dans les applications de bureau : comment garder une fenêtre spécifique toujours visible, même si d'autres fenêtres tentent de la masquer. Cet article se concentre sur les applications C# et Windows Forms.
Méthode initiale : attribut TopMost
En général, la première approche consiste à définir la propriété TopMost de la fenêtre sur true. Cela devrait promouvoir la fenêtre en haut de l'ordre z. Cependant, comme nos utilisateurs l’ont constaté, cela n’est pas toujours suffisant.
Défi : chevauchement des fenêtres TopMost
Le problème se produit lorsqu'un autre programme crée sa propre fenêtre TopMost. Ces fenêtres nouvellement apparues peuvent toujours chevaucher la fenêtre TopMost d'origine, la masquant ainsi.
Super TopMost : Briser les mythes
Pour résoudre ce problème, on pourrait rechercher une fenêtre "super TopMost" qui ne peut pas être couverte par d'autres fenêtres TopMost. Malheureusement, comme l'explique Raymond Chen dans son article, cela n'est pas possible avec la conception actuelle de Windows.
Solution : Gardez une trace de la commande Z
Étant donné qu’un comportement TopMost absolu n’est pas possible, nous pouvons adopter une autre approche. Nous pouvons surveiller l'ordre z de nos fenêtres et amener périodiquement notre fenêtre vers le haut pour nous assurer qu'elle reste visible. Voici un exemple de code C# :
<code class="language-c#">private async void Timer_Tick(object sender, EventArgs e) { // 如果窗口不再可见,则停止跟踪 z 顺序 if (!this.Visible) { timer.Stop(); return; } // 将窗口置于最前 this.TopMost = true; this.BringToFront(); this.TopMost = false; }</code>
Cette approche maintient systématiquement la fenêtre visible, même face aux fenêtres TopMost qui se chevauchent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!