【问题标题】:Assign button text dynamically via a loop通过循环动态分配按钮文本
【发布时间】:2011-11-11 12:01:42
【问题描述】:

我正在尝试使用如下循环动态分配按钮控件文本:

int ButtonNumber = 1;

while (ButtonNumber < 10)
{
    //WHAT TO DO HERE!?
    ButtonNumber++;
}

我想避免以下情况:

button1.Text = "";
button2.Text = "";
button3.Text = "";
button4.Text = "";
button5.Text = "";
button6.Text = "";
button7.Text = "";
button8.Text = "";
button9.Text = "";

【问题讨论】:

    标签: c# winforms button


    【解决方案1】:

    理想情况下,首先不要将button1button2 等作为变量。收藏(例如List&lt;Button&gt;):

    private List<Button> buttons = new List<Button>();
    

    (编辑:您当然需要在某个地方填充它...)

    然后稍后更新文本:

    for (int i = 0; i < buttons.Count; i++)
    {
        buttons[i].Text = "I'm button " + i;
    }
    

    不幸的是,这对设计师来说不是很好。

    可以通过 ID 获取控件,但我个人尽量不这样做。如果你真的想要:

    for (int i = 1; i <= 10; i++)
    {
        Control control = Controls["button" + i];
        control.Text = "I'm button " + i;
    }
    

    【讨论】:

    • 你不是也需要实例化每个Button对象吗?也将它们添加到列表中。
    • 为什么不推荐使用通过 ID 获取控件?它就像一个魅力!?
    • @Alex:你有一个 collection 按钮,对吧?您如何处理代码中的所有其他地方 的集合?您使用集合类。为什么 UI 应该有所不同?这里唯一的区别是设计者并没有真正理解控件集合的概念:(
    【解决方案2】:

    创建一个按钮数组:

    Button[] buttons = new Button[10];
    for(int i = 1; i < 10; i++)
    {
       buttons[i] = new Button();
       buttons[i].Text = "";
    }
    

    【讨论】:

      【解决方案3】:

      您始终可以使用this.Controls.Find() 在 WinForms 中定位命名控件。

      【讨论】:

        【解决方案4】:

        你也可以简单地这样做,假设你的表单中有所有按钮

        foreach (Control c in this.Controls)
                    {
                        if (c is Button)
                        {
                            c.Text = "MyButton" + (c.TabIndex + 1);
                        }
                    }
        

        【讨论】:

          【解决方案5】:

          //试试这个

                   Button btn;
                   for (int n_i = 0; n_i < 10; n_i++)
                      {
                      btn = (Button)Controls.Find("button" + n_i,true)[0];
                      btn.Text = "";
                      }
          

          【讨论】:

            猜你喜欢
            • 2018-09-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-08
            • 2021-09-29
            • 2021-11-11
            • 2017-01-01
            • 2022-08-03
            相关资源
            最近更新 更多