簡體   English   中英

如何刪除ListBox中的多個選定項?

[英]How to remove multiple selected items in ListBox?

我的Windows窗體包含兩個列表框。 Listbox1中包含一些項目,listbox2為空。 當我按下表單上的按鈕時,應從Listbox1中刪除listbox1中的多個選定項目並將其復制到Listbox2。

我嘗試使用listbox1.SelectedItems上的foreach循環,但它只從列表中刪除了1個項目。

任何人都有解決方案或代碼嗎?

你可以在一個循環中完成所有操作。 你應該在SelectedIndices上使用一個簡單的for和loop向后循環:

private void button1_Click(object sender, EventArgs e) 
{ 
    for(int x = listBox1.SelectedIndices.Count - 1; x>= 0; x--)
    { 
        int idx = listBox1.SelectedIndices[x];
        listBox2.Items.Add(listBox1.Items[idx]); 
        listBox1.Items.RemoveAt(idx);
    } 
} 

我這樣做是使用CopyTo方法將項目復制到數組所選項目的計數長度,然后循環該數組從ListBox1中刪除每個相應的項目。

 private void button1_Click(object sender, EventArgs e)
 {
     object[] itemsToRemove = new object[listBox1.SelectedItems.Count];
     listBox1.SelectedItems.CopyTo(itemsToRemove, 0);

     foreach (object item in itemsToRemove)
     {
         listBox1.Items.Remove(item);
         listBox2.Items.Add(item);
     }
 }

你必須存儲值,你想在其他地方刪除,然后從列表中刪除它們,這是示例代碼:

private void button1_Click(object sender, EventArgs e)
{
    ArrayList tmpArr = new ArrayList();
    foreach (object obj in listBox1.SelectedItems)
    {
        listBox2.Items.Add(obj);
        tmpArr.Add(obj);
    }
    foreach (object obj in tmpArr.ToArray())
    {
        listBox1.Items.Remove(obj);
    }
}

對於VS2005我用戶類似於我無法使用的東西.selectedIndices

  for (int i = ListBox1.Items.Count - 1; i >= 0; i--)
        {
                if (ListBox1.Items[i].Selected)
                {
                    ListBox2.Items.Add(ListBox1.Items[i]);
                    ListBox1.Items.Remove(ListBox1.Items[i]);
                }

        }
 for (int x = listBox1.SelectedIndices.Count - 1; x >= 0; x--)
        {
            int var = listBox1.SelectedIndices[x];
            listBox1.Items.RemoveAt(var);

        }

其作品。

這是我的方法:

 List<String> arr = new List<string>();
    private void btnAdd_Click(object sender, EventArgs e)
    {
        arr.Add(txtItem.Text);
        lstItem.DataSource = arr.ToArray();
        txtItem.Focus();
    }
//When i delete
    private void btnRemove_Click(object sender, EventArgs e)
    {

        foreach (string item in lstItem.SelectedItems)
        {
            arr.Remove(item);
        }
        lstItem.DataSource = arr.ToArray();

     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM