Je suis un développeur WinForms assez expérimenté. J'ai une MdiApplication qui fonctionnait bien. Cependant, récemment, le shell principal de l'application, pour lequel nous utilisons ComponentOne RibbonForm, a été mis à jour de façon importante. Cette mise à jour a affecté certains de nos autres composants tiers, ce que nous avons établi était dû à l'utilisation par ComponentOne de DoEvents()
dans leur code d'événement. Je pensais avoir nettoyé tout le code causant des problèmes, mais je l'ai maintenant trouvé un autre ...WinForms MdiChildren Sélection et Activation
Quand j'ai plusieurs MdiChildren
ouvert et sélectionnez l'un de ces derniers dans le code d'un événement de clic bouton sur la forme de ruban par
MdiChildren
ouverts ont encore le focus, que les formulaires sont mis en surbrillance et que l'entrée n'est pas définie sur le document que j'ai défini dans le code
Deux questions:
Comment puis-je vous assurer que les
Form
Je veux faire actif est le seul qui est actif?Relier à ce qui précède; définir un formulaire comme actif en utilisant
form.Activate()
devrait désactiver les autresMdiChildren
, mais ce n'est pas - comment puis-je désactiver les autres fenêtres dans le code?
Merci pour votre temps.
Votre première question me trouble ... dans quel scénario y a-t-il plus d'un enfant actif? Le comportement de MDI est de faire exactement ce que vous voulez afin que tout autre comportement semble artificiel. – DonBoitnott
Je peux ouvrir plus d'un classeur Excel, ce qui me permet d'avoir plusieurs enfants mdi actifs à la fois. L'utilisateur peut les activer comme il le souhaite via un bouton (alignement horizontal, ou quoi que ce soit). Je pose les éléments et je veux restaurer la fenêtre active après l'opération de mise en page. Maintenant, pour une raison quelconque, lorsque je fais cela, j'ai deux fenêtres actives, la dernière que j'ai déplacée par programme et celle que j'ai définie après l'opération. 'form.Active()' devrait mettre 'form' comme actif et par le comportement par défaut, les autres devraient désactiver, cela ne se produit pas. Pourquoi? – MoonKnight
J'ai maintenant un problème avec 'C1Ribbon' et un formulaire MDI que je suspecte est dû à leur utilisation de' DoEvents() '. Pourriez-vous développer ce que vous avez trouvé qui vous causait des problèmes? – DonBoitnott