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;
¿Fue útil?

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
scroll top