Question

Comment savoir si un hWnd appartient à l'un de mes contrôles enfants?

Je veux faire quelque chose comme:

if(this.Controls.Find(hWnd) != null) return false;
Était-ce utile?

La solution

Il existe une fonction Win32 pour cela: IsChild

Autres conseils

Cela semble être une excellente occasion d’utiliser la récursivité. Ajoutez cette fonction à votre classe parent:

  private bool IsChild(System.Windows.Forms.Control control, System.IntPtr hWnd)
  {
     if(control.Handle == hWnd)
        return(true);

     foreach (System.Windows.Forms.Control child in control.Controls)
     {
        if (IsChild(child, hWnd))
           return (true);
     }
     return (false);
  }

Vous pouvez ensuite utiliser cette fonction pour rechercher dans cette classe parente tout contrôle enfant ayant le hWnd spécifié:

this.IsChild(this, hWnd);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top