2010-03-02 1 views
3

J'ai une fenêtre d'application qui couvre l'écran et il y a plusieurs fenêtres d'outils mineurs qui sont masquées par défaut et leurs propriétés 'Propriétaire' sont définies dans cette fenêtre principale.Pourquoi le fait de masquer une fenêtre possédée change-t-il d'application dans WinForms (.NET)?

Lorsque je montre une fenêtre d'outils et que je clique sur l'un de ses boutons, elle se cache pour afficher une autre fenêtre. Lorsque je cache une autre fenêtre d'outils Windows change d'app comme lorsque vous appuyez sur alt + tab. Le seul moyen d'empêcher cela est de cliquer sur la fenêtre principale de l'application avant de fermer (cacher) la fenêtre de l'outil.

Pourquoi la commutation d'application se produit-elle et comment l'éviter? Eh bien, je peux dire explicitement ces fenêtres pour mettre la fenêtre principale sur hide (je n'ai pas encore essayé, mais je n'aime pas faire cela.) Cela se produit uniquement lorsque la propriété Owner est définie sur les fenêtres pour empêcher eux de montrer derrière la fenêtre principale.

ps: Cette application plein écran est un jeu et les fenêtres sont les menus et les écrans de réglage, etc ...

Répondre

1

problème Murky, je ne peux pas repro et n'a pas entendu parler de cela auparavant. Ce comportement est normal lorsque le gestionnaire de fenêtres Windows est forcé de rechercher une autre fenêtre pour donner le focus à la fermeture de la fenêtre en cours. Et l'application n'a aucune fenêtre à gauche qui est activée. Cela ne devrait pas être le cas dans votre application, sauf si vous avez volontairement défini la propriété Enable de votre fenêtre principale sur False si la fenêtre de l'outil obtient le focus. L'exécution de fenêtres sur différents threads est une explication à long terme. Les choses à essayer sont de définir la propriété ShowInTaskbar de la fenêtre de l'outil sur false afin que l'utilisateur doive toujours passer par la fenêtre principale pour recentrer l'application. Et pour vous assurer que la fenêtre se ferme uniquement à cause d'un événement MouseUp, la capture de la souris ne peut pas gâcher les choses. Et, oui, pour focaliser explicitement la fenêtre principale dans l'événement FormClosing.

+0

La perte totale de focus peut-être la raison. Mais il y a un problème ... La fenêtre principale est toujours activée mais elle semble perdre le focus ou ne pas le récupérer. Et à propos de la capture de la souris hmmm. Donc se cacher une fenêtre en réponse à un clic sur un bouton est faux? Je ne peux pas le tester maintenant, je suis sur Linux. Peut-être quand je rentrerai à la maison. Et il y a des problèmes plus sérieux avec Mono. – Calmarius

+0

Il est essentiel de documenter une telle configuration non standard dans votre question. Personne ne peut vous donner une réponse précise sans le savoir. Ne marquez pas une question "windows" lorsque vous exécutez réellement linux. –

+0

Je ne peux pas amener mon ordinateur de bureau avec moi à l'université ... Et le linux est sur mon ordinateur portable et pas de fenêtres dessus ... Maintenant, je suis à la maison et j'espère pouvoir résoudre ce problème ce soir. – Calmarius

Questions connexes