【发布时间】:2009-05-07 15:44:14
【问题描述】:
如何判断 hWnd 是否属于我的子控件之一?
我想做这样的事情:
if(this.Controls.Find(hWnd) != null) return false;
【问题讨论】:
如何判断 hWnd 是否属于我的子控件之一?
我想做这样的事情:
if(this.Controls.Find(hWnd) != null) return false;
【问题讨论】:
为此有一个 Win32 函数:IsChild
【讨论】:
听起来是使用递归的好机会。将此函数添加到您的父类:
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);
【讨论】: