Мне было интересно, есть ли способ сгруппировать 2 текстовых поля и 3 флажка вместе в C#. Мне нужно сделать 37 из этих 5 коробок, и я думаю, что создание их вручную в режиме дизайна было бы неэффективным. Я не уверен, с чего начать. Я думал о создании класса, но не думаю, что можно сделать текстовое поле свойством класса. Ящики также должны иметь разные имена, чтобы они не конфликтовали друг с другом.
Создайте UserControls. Создание составных элементов управления - одна из целей пользовательского элемента управления.
создать настраиваемый элемент управления или использовать групповой ящик, но он не будет маскировать элементы управления под крыльями ...





После предложений я в конечном итоге использовал пользовательский элемент управления. Вот что я сделал, чтобы сделать 37 динамических ящиков
while (count < 36)
{
if (count >= 1)
{
if (count % 2 == 0)
{
x = 50;
y = y + 320;
}
else
{
x = 450;
}
}
if (count == 1)
{
y = 80;
}
var question = new Questions();
question.questions_Descriptionbox.Name = questionNames[count] + "_Descriptionbox";
question.questions_Descriptionbox.Text = question.questions_Descriptionbox.Name + count + " Y: " + y + " X:" + x + " Name:" + name;
question.questions_Descriptionbox.Location = new Point(x, y);
y = y + 70;
question.questions_checkboxok.Name = questionNames[count] + "_Okcheckbox";
question.questions_checkboxok.Text = question.questions_checkboxok.Name;
question.questions_checkboxok.Location = new Point(x, y);
x = x + 120;
question.questions_checkboxwarning.Name = questionNames[count] + "_Warningcheckbox";
question.questions_checkboxwarning.Text = question.questions_checkboxwarning.Name;
question.questions_checkboxwarning.Location = new Point(x, y);
x = question.questions_Descriptionbox.Location.X + 235;
question.questions_checkboxneedsattention.Name = questionNames[count] + "_NeedsAttentioncheckbox";
question.questions_checkboxneedsattention.Text = question.questions_checkboxneedsattention.Name;
question.questions_checkboxneedsattention.Location = new Point(x, y);
x = question.questions_Descriptionbox.Location.X;
y = y + 50;
question.questions_notebox.Name = questionNames[count] + "_Notecheckbox";
question.questions_notebox.Text = question.questions_notebox.Name;
question.questions_notebox.Location = new Point(x, y);
this.Controls.Add(question.questions_Descriptionbox);
this.Controls.Add(question.questions_checkboxok);
this.Controls.Add(question.questions_checkboxwarning);
this.Controls.Add(question.questions_checkboxneedsattention);
this.Controls.Add(question.questions_notebox);
count++;
}
descriptionbox.text нужен только для того, чтобы убедиться, что он работает должным образом.
Возможный дубликат stackoverflow.com/questions/2229019/…