¿Es esta una hija mía?
Pregunta
¿Cómo puedo saber si un hWnd pertenece a uno de mis controles secundarios?
Quiero hacer algo como:
if(this.Controls.Find(hWnd) != null) return false;
Solución
Hay una función Win32 para esto: IsChild
Otros consejos
Suena como una gran oportunidad para usar la recursividad. Agregue esta función a su clase principal:
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);
}
Luego puede usar esta función para buscar en esta clase padre cualquier control secundario con el hWnd especificado:
this.IsChild(this, hWnd);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow