Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Focus et Raccourcis dans une application MDI

4 réponses
Avatar
LiR
Bonjour à tous,

J'ai une application avec une fenêtre MDI, dans laquelle se trouvent des
contrôles Textbox (situés dans un Panel appartenant à la MDI). La MDI a
également des menus, dont l'un d'entre eux a un reccourci CTRL+C, par exemple.
Mon problème est que lorsque l'un des Textbox a le focus, l'utilisation de
CTRL+C déclenche l'action du menu de la MDI et non l'action coller du Textbox.
Comment pourrais-je faire pour que les raccourcis claviers s'appliquent bien
aux contrôles ayant le focus et non aux menus de la MDI?

Je vous remercie,

LiR

4 réponses

Avatar
Stéphane
Bonjour LiR,

Sur la réception du focus des textbox, il est peut-être possible de
désactiver le raccourcis du menu concerné.
Puis de le réactiver sur la perte du focus des textbox.

Private Sub TextBoxes_GotFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox1.GotFocus, TextBox2.GotFocus

mon_MenuItem.Shortcut = Shortcut.None

End Sub

Private Sub TextBoxes_LostFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox1.GotFocus, TextBox2.GotFocus

mon_MenuItem.Shortcut = Shortcut.CtrlC

End Sub





Mode humour vaseux On
Mon problème est que lorsque l'un des Textbox a le focus, l'utilisation de
CTRL+C déclenche l'action du menu de la MDI et non l'action coller du
Textbox.


Ctrl+C, ca colle pas !
Mode humour vaseux Off

Stéphane



"LiR" a écrit dans le message de news:

Bonjour à tous,

J'ai une application avec une fenêtre MDI, dans laquelle se trouvent des
contrôles Textbox (situés dans un Panel appartenant à la MDI). La MDI a
également des menus, dont l'un d'entre eux a un reccourci CTRL+C, par
exemple.
Mon problème est que lorsque l'un des Textbox a le focus, l'utilisation de
CTRL+C déclenche l'action du menu de la MDI et non l'action coller du
Textbox.
Comment pourrais-je faire pour que les raccourcis claviers s'appliquent
bien
aux contrôles ayant le focus et non aux menus de la MDI?

Je vous remercie,

LiR



Avatar
Stéphane
2e solution :

ou plus simple,

ne pas utiliser le raccourcis ctrl+c pour autre chose que copier... (c'est
la solution que je retiendrai)


Stéphane



"LiR" a écrit dans le message de news:

Bonjour à tous,

J'ai une application avec une fenêtre MDI, dans laquelle se trouvent des
contrôles Textbox (situés dans un Panel appartenant à la MDI). La MDI a
également des menus, dont l'un d'entre eux a un reccourci CTRL+C, par
exemple.
Mon problème est que lorsque l'un des Textbox a le focus, l'utilisation de
CTRL+C déclenche l'action du menu de la MDI et non l'action coller du
Textbox.
Comment pourrais-je faire pour que les raccourcis claviers s'appliquent
bien
aux contrôles ayant le focus et non aux menus de la MDI?

Je vous remercie,

LiR



Avatar
Stéphane
Erratum :

Il fallait lire :

Private Sub TextBoxes_LostFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox1.LostFocus, TextBox2.LostFocus


Stéphane



"Stéphane" a écrit dans le message de
news: %23u6%
Bonjour LiR,

Sur la réception du focus des textbox, il est peut-être possible de
désactiver le raccourcis du menu concerné.
Puis de le réactiver sur la perte du focus des textbox.

Private Sub TextBoxes_GotFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox1.GotFocus, TextBox2.GotFocus

mon_MenuItem.Shortcut = Shortcut.None

End Sub

Private Sub TextBoxes_LostFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox1.GotFocus, TextBox2.GotFocus

mon_MenuItem.Shortcut = Shortcut.CtrlC

End Sub





Mode humour vaseux On
Mon problème est que lorsque l'un des Textbox a le focus, l'utilisation
de
CTRL+C déclenche l'action du menu de la MDI et non l'action coller du
Textbox.


Ctrl+C, ca colle pas !
Mode humour vaseux Off

Stéphane



"LiR" a écrit dans le message de news:

Bonjour à tous,

J'ai une application avec une fenêtre MDI, dans laquelle se trouvent des
contrôles Textbox (situés dans un Panel appartenant à la MDI). La MDI a
également des menus, dont l'un d'entre eux a un reccourci CTRL+C, par
exemple.
Mon problème est que lorsque l'un des Textbox a le focus, l'utilisation
de
CTRL+C déclenche l'action du menu de la MDI et non l'action coller du
Textbox.
Comment pourrais-je faire pour que les raccourcis claviers s'appliquent
bien
aux contrôles ayant le focus et non aux menus de la MDI?

Je vous remercie,

LiR







Avatar
LiR
Bonjour,

Merci pour tes réponses,

Effectivement j'ai imaginé ce genre de solutions, mais mon application ne
peut pas se permettre de mettre un handler sur les textbox concernés car cela
nécessiterait trop de précautions (dès que j'ajoute un textbox lors de
modifications de mon programme il faudrait que je fasse attention...)

Je pense quand même que l'on peut garder un CTRL+C (pour copier!) ou un
CTRL+V (pour coller!) et ainsi de suite (la liste est longue) dans le menu
principal sans entrer en "conflit" avec les différents contrôles (car il y a
aussi des Combobox, des Treeview - labeledit- etc., la liste est également
longue).

Je suis sûr que dans le fonctionnement normal de windows, le contrôle qui a
le focus doit informer son contrôle parent qu'il traite la commande de
raccourci, ce qui semble être prévu, entre autres, par ProcessCmdKey(), mais
qui, en pratique ne semble pas fonctionner.
Ou, du moins, pas lorsque le contrôle n'a pas de ContextMenu associé (au
sens de .Net) ...

Je me suis penché sur ProcessCmdKey, qui, déclenché au niveau de la MDI,
montrait bien que la commande était destinée au Textbox qui avait le focus,
puisque la propriété hWnd du paramètre msg de la procédure était celui du
Textbox. Reste donc que je ne comprends pas pourquoi le textbox n'avertit pas
la MDI, en amont, qu'il veut traiter cette commande...

Si quelqu'un avait une info sur le fonctionnement de tout ça, ça me
dépannerait bien...

Merci encore pour ton soutien,

LiR

"Stéphane" a écrit :

2e solution :

ou plus simple,

ne pas utiliser le raccourcis ctrl+c pour autre chose que copier... (c'est
la solution que je retiendrai)


Stéphane



"LiR" a écrit dans le message de news:

> Bonjour à tous,
>
> J'ai une application avec une fenêtre MDI, dans laquelle se trouvent des
> contrôles Textbox (situés dans un Panel appartenant à la MDI). La MDI a
> également des menus, dont l'un d'entre eux a un reccourci CTRL+C, par
> exemple.
> Mon problème est que lorsque l'un des Textbox a le focus, l'utilisation de
> CTRL+C déclenche l'action du menu de la MDI et non l'action coller du
> Textbox.
> Comment pourrais-je faire pour que les raccourcis claviers s'appliquent
> bien
> aux contrôles ayant le focus et non aux menus de la MDI?
>
> Je vous remercie,
>
> LiR
>