作者tylerfirst (......)
看板C_Sharp
標題[問題] C# 刪除listbox中複數項的問題
時間Fri Oct 30 23:41:16 2009
※ [本文轉錄自 C_and_CPP 看板]
作者: tylerfirst (......) 看板: C_and_CPP
標題: [問題] C# 刪除listbox中複數項的問題
時間: Fri Oct 30 23:27:22 2009
如題,小弟用C#想設計一個button
此button按下的同時,會將listbox中選取的項目刪除
程式碼如下:
private void button5_Click(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
{
foreach (int select_Index in listBox1.SelectedIndices)
{
listBox1.Items.RemoveAt(select_Index);
}
}
}
跑出來的結果很奇怪= ="
如果選兩項,則只會刪除index比較前面的
如果選兩項以上,則會"隔項刪除".....意思就是選第一,二,四項卻只會刪掉一,四項
怎麼出現這種怪現象啊orz
我有試過把RemoveAt拿掉,單純用MessageBox顯示抓到的項數,結果是正常的
有想過會不會因為是Remove的關係導致程式抓的Index亂掉...
請板上前輩們指點一下 3Q<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.164.170
→ tiyun:請至C_Sharp 10/30 23:37
推 VictorTom:C#板在樓下啊XDDD 10/30 23:37
→ tylerfirst:啊 抱歉XD 因為我的最愛都放在一起... 10/30 23:40
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.164.170
→ liaommx:如果是因為remove的話,那為什麼1,2,4只刪除1,4?..XD 10/30 23:52
→ liaommx:為什麼不是刪除1,5?:P 10/30 23:52
→ tylerfirst:我也不知道= = 但是把remove拿掉又正常...我也只能想到 10/31 00:24
→ tylerfirst:是remove的關係了... 10/31 00:24
→ EricTsai:請用for,foreach不應該變動集合 10/31 00:25
→ EricTsai:不過這樣說好像沒解決問題...Remove之後index的確就變了 10/31 00:28
→ fphoenix923:你需要從後面刪回來,因為刪完後Index會重排 10/31 00:58
→ tylerfirst:解決了! 非常感謝~ 10/31 08:55