L'ouverture d'un WinForms Formulaire avec le plus haut = vrai, mais ne pas l'avoir voler le focus?
J'ai un formulaire qui s'affiche sur votre écran et a TopMost=true
, mais il vole de l'accent. Comment puis-je obtenir à pas voler l'accent quand elle apparaît d'abord?
+1: je déteste windows qui volent de l'accent!
Si c'est possible, je parie que Raymond Chen a écrit à ce sujet: blogs.msdn.com/b/oldnewthing
Je suis surprise de voir que ce n'est pas quelque chose de juste construit en WinForms...
Si c'est possible, je parie que Raymond Chen a écrit à ce sujet: blogs.msdn.com/b/oldnewthing
Je suis surprise de voir que ce n'est pas quelque chose de juste construit en WinForms...
OriginalL'auteur sooprise | 2010-09-16
Vous devez vous connecter pour publier un commentaire.
Collez ce code dans votre formulaire:
Ne fonctionne toujours pas dans VS 2010. Ne fonctionne que quand le Premier sur le popup forme est définie sur false.
Je suis l'aide de VS2008 et il a parfaitement fonctionné 🙂
Oh les rats, c'est vrai, Premier mess cette place. Ne fonctionne pas dans VS2010. Vous aurez à P/Invoke SetWindowPos() avec HWND_TOPMOST et SWP_NOACTIVATE. Utilisation pinvoke.net pour les déclarations.
Vous ne savez pas comment vous l'avez obtenu pour le travail que c'est un bug connu. @Hans: +1 sur le commentaire de l'ajout de la mention de P/Invoke pour résoudre ce problème.
OriginalL'auteur Hans Passant
C'est ce qui a fonctionné pour moi. Il fournit plus haut, mais sans accent-vol.
N'oubliez pas de les omettre de réglage de niveau Supérieur dans le concepteur Visual Studio, ou ailleurs.
Ce n'est pas volé, err, emprunté, à partir d'ici (cliquez sur les Solutions):
https://connect.microsoft.com/VisualStudio/feedback/details/401311/showwithoutactivation-is-not-supported-with-topmost
Eh, en retard, mais Archive.org lien.
OriginalL'auteur RenniePet
Vous pouvez le faire comme ceci:
OriginalL'auteur Traubenfuchs
J'ai testé le code ci-dessous à l'aide d'une minuterie sur form1 pour instancier et de montrer form2 avec form1 en tant que propriétaire.
Dans form2 est Montré cas j'ai ensuite mis l'accent sur le propriétaire, qui est l'actuelle forme active.
J'ai une zone de texte sur form1 et a été en mesure de continuesly écrire dans la zone de texte sans perdre le focus au cours de ce processus.
Mon minuteur de code de form1:
Mon code dans le cas de form2:
Vous pouvez le faire ou Supérieur à faux et usage de la substitution de ShowWithoutActivation comme Hans Passant déclaré.
Edit: (Ou de l'utilisation de p/invoke comme on le voit dans Hans Passant de commentaire je l'ai raté alors que j'ai écrit ce)
OriginalL'auteur Nope
Je suis tombé sur le même problème. Je ne suis pas à l'aide de C# mais le C++. Je suppose que cela pourrait être utile de toute façon:
À l'aide de windows.h:
Passant le drapeau SWP_NOACTIVATE à la uFlags argument a fonctionné pour moi.
OriginalL'auteur Sergio Pulgarin
Vous pouvez définir:
sur l'événement Load du formulaire.
C'est OK avec moi!
OriginalL'auteur Quyet
Au lieu d'écrire
.setfocus()
dans_activated
événement; écrire à.shown
cas de la forme.OriginalL'auteur nes