我怎么知道我的按钮是否与另一个按钮相交
本文关键字:按钮 另一个 是否 我的 我怎么知道 | 更新日期: 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!
}