Ma forme hiérarchie est quelque chose comme ceci:méthode GetChildAtPoint retourne le mauvais contrôle
Form -> TableLayoutOne -> TableLayoutTwo -> Panel -> ListBox
En cas MouseMove de la zone de liste, j'ai le code comme ceci:
Point cursosPosition2 = PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
Control crp = this.GetChildAtPoint(cursosPosition2);
if (crp != null)
MessageBox.Show(crp.Name);
Le MessageBox montre moi "TableLayoutOne", mais je m'attends à ce qu'il me montre "ListBox". Où est-ce que je me trompe dans mon code? Merci.
Dang! Merci pour info ... avez-vous d'autres idées sur la façon de l'obtenir? peut-être lire l'emplacement du curseur et vérifier s'il est à l'intérieur de l'emplacement de ListBox? – Bohn
Voir ma mise à jour; vous pouvez continuer à appeler 'GetChildAtPoint()' sur le contrôle retourné pour aller plus loin dans la hiérarchie. Vous êtes également libre de vérifier le type de contrôle à chaque étape, afin que vous puissiez renflouer si vous avez trouvé ce que vous cherchiez. – dlev