Динамически назначать текст кнопки через цикл - PullRequest
1 голос
/ 11 ноября 2011

Я пытаюсь динамически назначать элементы управления кнопками с помощью цикла, подобного следующему:

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 = "";

Ответы [ 5 ]

10 голосов
/ 11 ноября 2011

В идеале, не используйте button1, button2 и т. Д. В качестве переменных.Иметь коллекцию (например, List<Button>):

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;
}
1 голос
/ 11 ноября 2011

Создать массив кнопок:

Button[] buttons = new Button[10];
for(int i = 1; i < 10; i++)
{
   buttons[i] = new Button();
   buttons[i].Text = "";
}
0 голосов
/ 02 ноября 2016

// попробуйте это

         Button btn;
         for (int n_i = 0; n_i < 10; n_i++)
            {
            btn = (Button)Controls.Find("button" + n_i,true)[0];
            btn.Text = "";
            }
0 голосов
/ 11 ноября 2011

Вы также можете сделать это просто, если у вас есть все кнопки в вашей форме

foreach (Control c in this.Controls)
            {
                if (c is Button)
                {
                    c.Text = "MyButton" + (c.TabIndex + 1);
                }
            }
0 голосов
/ 11 ноября 2011

Вы всегда можете использовать this.Controls.Find () , чтобы найти именованный элемент управления в WinForms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...