C# 从foreach循环添加控件
我试图从foreach循环向面板添加控件。 当我按下按钮时,我希望数组中的每个元素都显示为复选框。这是wordking fine,然后我希望复选框后面有一个数字向上向下,以便用户可以选择一个值 用于创建复选框的代码工作得很好,对于数组中的每个项目,它都会显示e复选框。但它只显示1个数字向上向下 有人能告诉我为什么它只显示1个数字向上向下,而显示所有的复选框吗 这是我的密码:C# 从foreach循环添加控件,c#,.net,winforms,C#,.net,Winforms,我试图从foreach循环向面板添加控件。 当我按下按钮时,我希望数组中的每个元素都显示为复选框。这是wordking fine,然后我希望复选框后面有一个数字向上向下,以便用户可以选择一个值 用于创建复选框的代码工作得很好,对于数组中的每个项目,它都会显示e复选框。但它只显示1个数字向上向下 有人能告诉我为什么它只显示1个数字向上向下,而显示所有的复选框吗 这是我的密码: private void bierButton_Click(object sender, EventArgs e) {
private void bierButton_Click(object sender, EventArgs e)
{
int height = 1;
int padding = 10;
int i = 0;
int x = 0;
CheckBox[] chk = new CheckBox[10];
NumericUpDown[] nmr = new NumericUpDown[10];
orderBox.Clear();
hideBtn();
foreach (string bieren in Drinks.bier)
{
chk[i] = new CheckBox();
nmr[i] = new NumericUpDown();
chk[i].Name = i.ToString();
chk[i].Text = Drinks.bier[i];
chk[i].TabIndex = i;
chk[i].AutoCheck = true;
chk[i].Bounds = new Rectangle(10, 0 + padding + height, 200, 22);
panel1.Controls.Add(chk[i]);
testPanel.Controls.Add(nmr[i]);
height += 22;
i++;
}
}
您似乎没有更新NumericUpDown控件的位置 他们都在那里,他们只是在彼此之上 考虑这一变化:
private void bierButton_Click(object sender, EventArgs e)
{
int height = 1;
int padding = 10;
int i = 0;
int x = 0;
CheckBox[] chk = new CheckBox[10];
NumericUpDown[] nmr = new NumericUpDown[10];
orderBox.Clear();
hideBtn();
foreach (string bieren in Drinks.bier)
{
chk[i] = new CheckBox();
nmr[i] = new NumericUpDown();
chk[i].Name = i.ToString();
chk[i].Text = bieren; // Drinks.bier[i];
chk[i].TabIndex = i;
chk[i].AutoCheck = true;
chk[i].Bounds = new Rectangle(10, 0 + padding + height, 200, 22);
// Start New Code
nmr[i].Bounds = new Rectangle(10, 0 + padding + height, 200, 22);
// End New Code
panel1.Controls.Add(chk[i]);
testPanel.Controls.Add(nmr[i]);
height += 22;
i++;
}
}
我还将一行更改为chk[I].Text=bieren 也许是因为你没有填充它的边界属性?也许您的所有数字上下控制都只是简单地显示在彼此的顶部,全部位于完全相同的位置。这与您当前的问题无关,但您是舒尔饮料公司吗。bier最多只能有10个项目?如果我知道你在哪里,我会做新的复选框[Drinks.bier.Count]或类似的操作。编辑:事实上,在代码中根本没有理由使用数组,只需声明CheckBox chk=newcheckbox;NumericUpDown nmr=新的NumericUpDown位于foreach循环内,并删除所有[i]项。EDIT2:我也会用“换饮料”。bier[I]到Bieren对我来说,看起来你只有一杯饮料。Tnx伙计们,我需要添加并修复我的bounds属性。现在它就像一个符咒斯科特·张伯伦,你在右边,不需要阵列。Tnx所有的帮助:当然,nmr[i]的界限应该是你需要的任何东西。