2009-11-05 3 views
3

Nous avons un scénario dans lequel nous exposons un ensemble de WinForms UserControls via COM à une application Legacy VB6. Nous avons 3 contrôles différents qui ont un MenuStrip dessus qui a le Ctrl + F la touche de raccourci mappée à un élément de menu qui invoque une boîte de dialogue spécifique de contrôle des éléments lorsque le raccourci est entré. Lorsque nous essayons de tester ce code dans notre shell WinForms, la boîte de dialogue appropriée (celle hébergée dans le MdiChild actif) apparaît lorsque les 3 contrôles existent, mais dans l'hôte VB6, la mauvaise boîte de dialogue apparaît généralement (il semble toujours être le premier contrôle qui a été créé). Je suis à peu près certain que cela a quelque chose à voir avec les pompes de messages et tout, mais je n'arrive pas à comprendre comment m'assurer que le bon ToolStripMenuItem est invoqué lorsque nous entrons dans la touche de raccourci.Comment faire pour que la touche de raccourci ToolStripMenuItem fonctionne lorsque le contrôle WinForms est hébergé dans VB6 Formulaire

Je sais que l'option d'utiliser un gestionnaire/service ShortcutKey global/singleton qui remplace ProcessCmdKey est une possibilité, mais ce serait le dernier recours sur lequel nous voulons nous appuyer. J'ai juste l'impression qu'une pompe à message doit être démarrée.

Répondre

0

Ceci peut être inapproprié à vos besoins. Et cela pourrait s'appliquer uniquement à VB6 spécifiquement. Mais avez-vous envisagé d'utiliser VB6 avec les menus standard, et de garder les raccourcis clavier et de déclencher les choses de manière appropriée? Vous pourriez alors simplement masquer les menus individuels (mais ils devraient toujours déclencher leurs événements).

Questions connexes