我想创建一个循环,将组合框和标签添加到Windows窗体中。我已经创建了它们但我如何访问它们以从组合框中获取线索
while (i < 3)
{
cboTwinRoom = new ComboBox();
cboTwinRoom.FormattingEnabled = true;
cboTwinRoom.Location = new System.Drawing.Point(446, 218 + spacer);
cboTwinRoom.Name = "name" + i;
cboTwinRoom.Items.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"});
cboTwinRoom.Size = new System.Drawing.Size(45, 21);
cboTwinRoom.TabIndex = 3;
grpAvailability.Controls.Add(cboTwinRoom);
i++;
spacer = spacer + 50;
}
我尝试使用数组来设置comboBox的名称,但是我收到了一个错误。如果有人能提供帮助我会很棒的。提前致谢
错误:名称为'names'的局部变量不能在此范围内声明,因为它会给'names'赋予不同的含义,'names'已在'parent或current'范围内用于表示其他内容
答案 0 :(得分:0)
行cboTwinRoom.Name =“name”+我不应该工作。你不能将字符串连接到int。 使用“name”+ i.ToString()
答案 1 :(得分:0)
尝试将组合框存储为类级变量。
首先定义一下:
private List<ComboBox> comboBoxes;
然后你的代码看起来像这样:
Func<int, ComboBox> createComboBox = i =>
{
cb = new ComboBox();
cb.FormattingEnabled = true;
cb.Location = new Point(446, 218 + i * 50);
cb.Name = "name" + i;
cb.Items.AddRange(new object[]
{
"1", "2", "3", "4", "5", "6", "7", "8", "9"
});
cb.Size = new Size(45, 21);
cb.TabIndex = 3;
return cb;
};
comboBoxes =
Enumerable
.Range(0, 3)
.Select(n => createComboBox(n))
.ToList();
comboBoxes
.ForEach(cb =>
grpAvailability.Controls.Add(cb));
我已经将代码的每个部分分开,希望能够轻松查看每个部分正在做什么。