Comment puis-je savoir si un hWnd appartient à l'un de mes contrôles enfants?Est-ce que cette hwnd est un de mes enfants?
Je veux faire quelque chose comme:
if(this.Controls.Find(hWnd) != null) return false;
Comment puis-je savoir si un hWnd appartient à l'un de mes contrôles enfants?Est-ce que cette hwnd est un de mes enfants?
Je veux faire quelque chose comme:
if(this.Controls.Find(hWnd) != null) return false;
Il y a une fonction Win32 pour cela: IsChild
sonne comme une grande chance d'utiliser récursivité. Ajouter cette fonction à votre classe parente:
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 cette classe mère pour tout enfant contrôle avec le hWnd spécifié:
this.IsChild(this, hWnd);
merci! J'espérais qu'il y avait un moyen plus rapide que d'itérer sur les contrôles enfants (surtout si le hWnd appartient à un enfant d'un enfant :)) –