检查一个控件是否正在“触摸”另一个控件
本文关键字:控件 触摸 另一个 是否 一个 检查 | 更新日期: 2023-09-27 18:34:23
我正在尝试检查一个Windows窗体控件是否"接触"了同一窗体中的另一个Windows 窗体控件。
例:窗体内有两个按钮。假设这两个按钮在窗体的边界内是可移动的。如何检查两个按钮是否接触(或任何系统控制)?
如何检查?
您可以对照其他控件检查控件Bounds
,并检查它们是否有任何间隙。
// if your first control is specified you can use the following code
foreach (Control c2 in Controls)
{
if (!c2.Equals(c1) && c2 is Button /* if you want it to be just buttons */
&& c1.Bounds.IntersectsWith(c2.Bounds))
{
// c1 has touched c2
}
}
如果所有控件都可以移动,并且您想查看它们何时相互接触,则可以使用以下代码:
foreach (Control c1 in Controls)
{
foreach (Control c2 in Controls)
{
if (!c2.Equals(c1)
&& c1.Bounds.IntersectsWith(c2.Bounds))
{
// c1 has touched c2
}
}
}
维护所有父控件的显示矩形。例如,如果有一个分组框,则维护该组框的显示矩形,而不是其中的控件。移动控件时,检查当前显示矩形是否与另一个显示矩形重叠。