Est-ce que c'est un de mes enfants?
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;
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