这是我的孩子吗?

时间:2009-05-07 15:44:15

标签: c# .net winforms hwnd

如何判断hWnd是否属于我的一个子控件?

我想做类似的事情:

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

2 个答案:

答案 0 :(得分:3)

这有一个Win32功能:IsChild

答案 1 :(得分:2)

听起来很有可能使用递归。将此函数添加到您的父类:

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