【问题标题】:C# - Getting to know if any winform button (of 64 buttons) was pressedC# - 了解是否按下了任何 winform 按钮(共 64 个按钮)
【发布时间】:2022-06-14 20:32:44
【问题描述】:

我正在使用 C# 上的 Windows 窗体构建一个跳棋游戏。 板尺寸为 8X8,我有 64 个按钮 - 其中 32 个处于活动状态,其中 32 个处于非活动状态。

我持有一个由 64 个“UpgradedButtons”组成的数组 - Winform 按钮将 [x,y] 作为它们在按钮数组中的位置。

private UpgradedButton[,] m_GameButtons;

for (int i = 0; i < m_GameSize; i++)
            {
                for (int j = 0; j < m_GameSize; j++)
                {
                    m_GameButtons[i, j] = new UpgradedButton(new Point(i,j));
                    m_GameButtons[i, j].Location = new Point(left, top);
                    m_GameButtons[i, j].Size = m_ButtonSize;
                    left += m_ButtonSize.Width;
                    if ((i % 2 == 0 && j % 2 == 0) || (i % 2 != 0 && j % 2 != 0))
                    {
                        m_GameButtons[i, j].Enabled = false;
                    }

                    if ((i < (m_GameSize / 2) - 1) && ((i % 2 == 0 && j % 2 != 0) || (i % 2 != 0 && j % 2 == 0)))
                    {
                        m_GameButtons[i, j].Text = "O";
                    }

                    else if (i > (m_GameSize / 2) && ((i % 2 == 0 && j % 2 != 0) || (i % 2 != 0 && j % 2 == 0)))
                    {
                        m_GameButtons[i, j].Text = "X";
                    }
                    Controls.Add(m_GameButtons[i, j]);
                }
            }

我遇到的问题是当一个键被按下时,我不知道哪个是那个。
我可以用 for 循环扫描我持有的数组,并询问每个按钮“你被按下了吗?如果是,做点什么。”。
但我觉得有比一直询问所有按钮是否被按下更有效的方法。
我在这里错过了什么?
谢谢!

【问题讨论】:

标签: c# winforms button


【解决方案1】:

由于单击按钮而执行的事件将在其“sender”参数中接收对该按钮的引用。

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2018-01-25
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多