1

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

我想做类似的事情:

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

2 回答 2

3

为此有一个 Win32 函数:IsChild

于 2009-05-07T15:58:18.900 回答
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);
于 2009-05-07T15:53:32.063 回答