我做了HW分配(一如既往,不间接地让我一个骗子,帮助我学习!),我有麻烦与列表框了很多。列表框传送内容和删除
我现在有它能够移动/删除单品(如水果将selectedItem => myFruits)
不过,我需要能够一次移动的所有项目,(删除它们很容易)。
谷歌还没有完全的帮助下,似乎很多答案也一路初学C#太复杂或他们可怕的弃用。
所以,问题是:如何将我一个列表框的内容传输到另一个? (ListBox1的名称:水果Listbox2名称:myFruits)
我做了HW分配(一如既往,不间接地让我一个骗子,帮助我学习!),我有麻烦与列表框了很多。列表框传送内容和删除
我现在有它能够移动/删除单品(如水果将selectedItem => myFruits)
不过,我需要能够一次移动的所有项目,(删除它们很容易)。
谷歌还没有完全的帮助下,似乎很多答案也一路初学C#太复杂或他们可怕的弃用。
所以,问题是:如何将我一个列表框的内容传输到另一个? (ListBox1的名称:水果Listbox2名称:myFruits)
要移动的所有项目,尝试以相反的顺序去:
for (int i = listBox1.Items.Count - 1; i >= 0; i--) {
listBox2.Items.Add(listBox1.Items[i]);
listBox1.Items.RemoveAt(i);
}
移动所有的“选择”的项目将是一个更可行的方法通过所有选定的项目,并添加这些到第二个列表框中第一个循环:
for (int i = 0; i < listBox1.SelectedItems.Count; i++) {
listBox2.Items.Add(listBox1.SelectedItems[i]);
}
然后删除从listBox1中的项目,更容易以相反的顺序去:
for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) {
listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);
}
的原因相反的顺序是简单。如果您按照前向顺序移除项目,则“下一个”索引将被关闭,您将不得不手动跟踪索引。因此,逆向排序避免了这个问题。
嗯,我很欣赏答案,但你并没有完全帮助我学习。 listbox2.items.removeat(i)应该是listbox1顺便说一句。它现在有用,谢谢! – 2012-02-06 20:03:53
@PRPGFerret添加了更多示例和一些解释。第一个例子虽然有效,但也会按照相反顺序将项目放入listBox2中,在这种情况下,您只需循环一次列表框即可添加,然后只需在完成时清除列表。希望有所帮助。 – LarsTech 2012-02-06 20:25:05
我有一些属性,我用了一段时间以前,在一个类似的项目......希望这可以帮助,因为它不会给你完整的答案,但让你根据你的功课与水果的两个列表的起点。
public List<string> NotAddedAssets
{
get
{
List<string> notAddedAssets = new List<string>();
for (int i = 0; i < lbNotAddingAssets.Items.Count; i++)
notAddedAssets.Add(lbNotAddingAssets.Items[i].ToString());
notAddedAssets.Sort();
return notAddedAssets;
}
set
{
lbNotAddingAssets.AppendDataBoundItems = true;
lbNotAddingAssets.Items.Clear();
value.Sort();
lbNotAddingAssets.DataSource = value;
lbNotAddingAssets.DataBind();
}
}
public List<string> AddedAssets
{
get
{
List<string> addedAssets = new List<string>();
for (int i = 0; i < lbAddingAssets.Items.Count; i++)
addedAssets.Add(lbAddingAssets.Items[i].ToString());
addedAssets.Sort();
return addedAssets;
}
set
{
lbAddingAssets.AppendDataBoundItems = true;
lbAddingAssets.Items.Clear();
value.Sort();
lbAddingAssets.DataSource = value;
lbAddingAssets.DataBind();
}
}
您可以使用以下策略:在一个新的列表
fruits.SelectedItems
),并为每个水果:
fruits.Items.Remove
)fruits.Items.Add
)
什么样的列表框中的? Windows窗体? Web窗体? SilverLight的? – 2012-02-06 20:03:53
对不起,这是一个Windows窗体。尽管第一个答案立即帮助了我,但对迟到感到抱歉。 – 2012-02-06 20:08:58