检查控件是否是"触摸"另一个控制

时间:2014-12-17 06:39:11

标签: c# winforms

我正在尝试检查Windows窗体控件是否是"触摸"同一表单中的另一个Windows窗体控件。

实施例: 表单中有两个按钮。让我们说这两个按钮可以在Form的边界内移动。如何检查两个按钮是否正在触摸(或任何System.Control)?

如何检查?

2 个答案:

答案 0 :(得分:3)

您可以针对其他控件检查控件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
        }

    }
}

答案 1 :(得分:0)

维护所有父控件的显示矩形。例如,如果有一个组框保持显示矩形,而不是其中的控件。移动控件时,请检查当前显示矩形是否与另一个重叠。