我正在尝试组合两个列表框的内容,这样如果ListBox 1中有A,B,C,而ListBox 2中有1,2,3,则ListBox 3中的输出将为:A1,A2, A3,B1,B2,B3,C1,C2,C3。我的下面的代码几乎可以做到这一点,但是它会在A和B迭代中进行写入,并且只显示C迭代。我在这里缺少什么?
字符串A; 字符串B;
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
A = listBox1.Items[i].ToString();
}
for (int j = 0; j < listBox2.Items.Count; j++)
{
B = listBox2.Items[j].ToString();
listBox3.Items.Add(A + ": " + B);
}
}
答案 0 :(得分:3)
是的,你错过了第二个循环开始时第一个循环结束的事实。这就是为什么A
始终是第一个列表框中的最后一个值的原因。嵌套循环:
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
A = listBox1.Items[i].ToString();
for (int j = 0; j < listBox2.Items.Count; j++)
{
B = listBox2.Items[j].ToString();
listBox3.Items.Add(A + ": " + B);
}
}
}
答案 1 :(得分:2)
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
A = listBox1.Items[i].ToString();
for (int j = 0; j < listBox2.Items.Count; j++)
{
B = listBox2.Items[j].ToString();
listBox3.Items.Add(A + ": " + B);
}
}
}
我将第二个for循环移动到第一个。这应该有用。
答案 2 :(得分:2)
如果你想使用LINQ,那么这很好用:
var items =
from A in listBox1.Items.Cast<string>()
from B in listBox2.Items.Cast<string>()
select A + ": " + B;
listBox3.Items.AddRange(items.ToArray());