【问题标题】:In C# windows forms apps, is there a way to access buttons using integers?在 C# windows 窗体应用程序中,有没有办法使用整数访问按钮?
【发布时间】:2022-07-27 21:11:54
【问题描述】:

我有一个数组,用于存储按钮的数量,但我想使用检查功能:

void check()
{
    if (counter == 2)
    {
        System.Threading.Thread.Sleep(200);
        if ((buttons[0] == 1 && buttons[1] == 6) || (buttons[0] == 6 && buttons[1] == 1))
        {
            button1.BackgroundImage = null;
            button6.BackgroundImage = null;
        }
        buttons[0] = 0;
        buttons[1] = 0;
        counter = 0;
   }
}

所以我只是想知道,有没有办法设置背景图像而不实际像这样声明? 例如像buttons[0].buttons.BackGroundImage = null; 还是有实际的方法可以做到这一点?

感谢您的回答!

【问题讨论】:

  • 什么是“按钮的数量”?您的意思是将按钮本身放入数组中吗?
  • 将它们放入数组var buttons = new[] { button1, button2, button3 };。但不要轮询按钮。使用事件。

标签: c# winforms


【解决方案1】:

您可以将所有 Button 对象放在一个列表中:

定义一个成员变量:

List<Button> buttonsList

然后用你的实际按钮(设计师创建的对象)填充它:

buttonsList.Add(button1);
...
buttonsList.Add(button6);
...

现在按钮编号将成为列表中的索引,您可以通过执行例如直接更改按钮属性(对于按钮 #0):

buttonsList[0].BackGroundImage = null

【讨论】:

    【解决方案2】:

    要获取按钮数组,请过滤 Form.Controls 属性

    Button[] button = this.Controls.OfType<Button>().ToArray();
    

    然后你可以做类似button[0].Visibility = false; 和类似的事情。

    【讨论】:

    • 您可以使用 OfType&lt;T&gt;() 而不是 Where().Cast&lt;T&gt;() 来完成这项工作。
    • @JeroenvanLangen - 正确。
    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多