Это мой ребенок? - PullRequest
       7

Это мой ребенок?

1 голос
/ 07 мая 2009

Как узнать, принадлежит ли hWnd одному из моих дочерних элементов управления?

Я хочу сделать что-то вроде:

if(this.Controls.Find(hWnd) != null) return false;

Ответы [ 2 ]

3 голосов
/ 07 мая 2009

Для этого есть функция Win32: IsChild

2 голосов
/ 07 мая 2009

Звучит как отличный шанс использовать рекурсию. Добавьте эту функцию в ваш родительский класс:

  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);
  }

Затем вы можете использовать эту функцию для поиска в этом родительском классе любых дочерних элементов управления с указанным hWnd:

this.IsChild(this, hWnd);
...