2012-04-11 5 views
1

Я пытаюсь создать много радиообъектов, используя цикл для формы окна. Проблема, с которой я столкнулась, состоит в том, чтобы сгенерировать имя переменной для каждого отдельного радиообмена. Первоначально я планирую добавлять различные числа, такие как 0001, 0002 для каждого радиоблока. Однако я не могу этого сделать, потому что имя переменной не является строкой. Любое предложение?Как создать сотни радиокнопков, используя For loop?

+0

Вы собираетесь наталкиваются на серьезные проблемы с производительностью с «сотни» управления на форме. И ваши пользователи будут серьезно подходить, потому что нет ничего «полезного» в этом интерфейсе. Но это легко сделать так, как вы описываете. Что значит «имя переменной не строка»? Да. Найдите свойство «Name» элемента управления переключателем. –

+0

@CodyGray Я планирую поместить эти кнопки в панель с полосой прокрутки. – Marco

+0

@CodyGray Я знаю, что есть название поля, подобного этому-> radioButton1-> Name = L "radioButton1"; , L "radioButton1" - это строка, но radioButton1 in (this-> radioButton1-> Name) не является строкой. Как я должен справиться с этим? – Marco

ответ

2

Используйте массив:

RadioButton[] rb = new RadioButton[100]; 
for (int i = 0; i < 100; i++) 
{ 
    rb[i] = new RadioButton(); 
    rb[i].Location = new Point(0, i * 20); 
    rb[i].Text = "Your text here"; 
    groupBox1.Controls.Add(rb[i]); 
    //etc. 
} 

Это в C#, так как я не знаю VC++, но, возможно, он может помочь вам.

+0

Одна вещь, которую я не понимаю, - это то, как добавить каждый из радиообъектов в групповой ящик? Я смущен, что должен быть такой оператор, как «this-> groupBox1-> Controls-> Add (this-> radioButton4);" Не так ли? Вы используете for-loop для создания, но на самом деле они не отображаются. Я прав? Мне жаль, что я очень новичок в VC++. – Marco

+0

@ Марко Я добавил это к моему ответу. А также исправил ошибку в исходном ответе, где я сам не создавал самих RadioButtons. Опять же, это в C#. – ispiro

-1

Попробуйте:

 var rb = new List<RadioButton>(); 
     bool Satisfied = false; int location =0; 

     while (!Satisfied) 
     { 
      rb.Add(new RadioButton() { Location = new Point(0, location * 20), Text = location.ToString() }); 
      location++; 
      Satisfied = rb.Count > 100 ? true : false; 
     } 


     foreach (object r in rb) 
     { 
      this.Controls.Add((RadioButton)r); 
     } 
Смежные вопросы