MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 2007
-
6 févr. 2006 à 15:20
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 2007
-
8 févr. 2006 à 10:54
Je dispose d'un FlowLayoutPanel contenu dans un SplitContainer
et d'un TreeView.
lorsque je clique avec la souris sur un item du treeview celui ci obtient le focus et je veux juste apres ce clique pouvoir utiliser le clavier pour
le FlowLayoutPanel ( je capture le KeyDown du container)
Mais voilà le focus reste au treeview et je n'arrive pas a lui enlever.
j'ai testé la méthode focus sur le container et le flowlayoutpanel mais rien de se passe .
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 6 févr. 2006 à 15:40
Désolé je n'ai pas indiqué que lorsque jappuie sur la touche tabulation tout fonctionne sans probleme : quelle est donc le control qui recoit le focus ?
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 6 févr. 2006 à 16:57
Ca ne fonctionne pas la méthode renvoie false , j'ai vérifié le tabstoponly il n'y a pas de problème de ce coté là.
Merci d'essayer de m'aider en tout cas !
Vous n’avez pas trouvé la réponse que vous recherchez ?
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 6 févr. 2006 à 18:44
Je veux pouvoir naviguer dans mon FlowLayoutPanel à l'aide des touches du clavier.
Etant donné que le FlowLayoutPanel n'as pas d'évenement KeyDown j'utilise l'évenement Keydown du splitcontainer qui contient le FlowLayoutPanel.
Je veux pouvoir naviguer juste apres que l'utilisateur ai cliqué sur un treeNode or celui-ci garde le focus et si j'utilise le clavier je naviguerai dans le TreeView !
Euh si je ne suis toujours pas clair dis le moi :)
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 6 févr. 2006 à 19:36
Non car même si je le recois avant ca sera tout de même transmis au contrôle : le treeView gardera son element selectionné or veux qu'il perde le focus :/
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 6 févr. 2006 à 20:59
Ah oui, je vois, je n'avais pas saisit le fait que la demande de changement de focus échoue du fait même qu'il s'agisse du contrôle TreeView.
Je pense que le contrôle redemande le Focus directement après la levée des events.
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 6 févr. 2006 à 21:57
Euh, une petite bidouille, faut de mieux : on vas utiliser les filtres de messages (implémentation de IMessageFilter) afin de reforcer la perte de focus, et ce après la fin de traitement des messages par le contrôle.
Mais bon si tu peux faire sans le contrôle TreeView ça serais peut être mieux.
Ca peut donner quelquechose de ce genre :
public partial class Form1 : Form, IMessageFilter
{
public Form1()
{
InitializeComponent();
// ajout du filtre
Application.AddMessageFilter(this);
}
private bool _mustKillTreeViewFocus = false;
#region IMessageFilter Members
public bool PreFilterMessage(ref Message m)
{
if (this._mustKillTreeViewFocus)
{
this.flowLayoutPanel1.Focus();
if ( !this.flowLayoutPanel1.Focused )
this._mustKillTreeViewFocus = false;
}
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
this._mustKillTreeViewFocus = true; // on demande à forcer la perte de focus du treeview
this.flowLayoutPanel1.Focus();
}
}
Mais bon, je voudrais bien avoir une autre solution si elle existe ^^
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 8 févr. 2006 à 10:54
Bon ca fonctionne mais c'est beaucoup de bidouillage.
On peut aussi imaginer un timer de quelques milliseconde qui se lance à la fin de l'event mais c'est encore plus bidouillage :)
Merci beaucoup pour ton aide et j'espère que quelqu'un nous donnera une solution satisfaisante afin
d'enfin pouvoir dormir l'esprit serein :)