我怎么知道我的按钮是否与另一个按钮相交

本文关键字:按钮 另一个 是否 我的 我怎么知道 | 更新日期: 2023-09-27 18:35:34

我有一个带有按钮的表单(btPlayer),然后我想知道我的按钮是否与另一个按钮相交。

但我不知道按钮的名称,我只知道"btPlayer"的名称。

我该怎么做这样的事情?

 if(btPlayer.Bounds.IntersectsWith(>>>>>ANYBUTTON()<<) {
      // ... do something
}

我怎么知道我的按钮是否与另一个按钮相交

假设 WinForms 和所有按钮都直接包含在窗体中

    private void btPlayer_Click(object sender, EventArgs e)
    {
        foreach(Button btn in this.Controls.OfType<Button>())
        {
            if (!btn.Equals(btPlayer))
            {
                if (btPlayer.Bounds.IntersectsWith(btn.Bounds))
                {
                    Console.WriteLine("btPlayer intersects with " + btn.Name);
                }
            }
        }
    }

您需要获取表单上的按钮集合。请注意,这并不一定像听起来那么容易,因为:

Controls.OfType<Button>();

不会抓取嵌套按钮(例如面板或分组框中的按钮)。一旦你有了你的收藏,它就像

//Not recursive, make sure we don't include ourself
IEnumerable<Button> allButtons = Controls.OfType<Button>()
                                 .Except(new List<Button>() { btPlayer })();
if (allButtons.Any(b => b.Bounds.IntersectsWith(btPlayer))
{
   //An intersection has occurred!
}