我做了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