How to Remove selected item from listbox C#

◇◆丶佛笑我妖孽 提交于 2019-12-02 07:56:54

Instead of using listView1.SelectedItems use listView1.CheckedItems and change your button2_click to:

private void button2_Click(object sender, EventArgs e)
        {
            foreach (ListViewItem i in listView1.CheckedItems)
                listView1.Items.Remove(i);

        }

Your problem is because the SelectedItems property is actually a reference to Items collection and you change the collection while iterating through it. try the following code

listView1.BeginUpdate();
ArrayList vSelectedItems = new ArrayList(listView1.SelectedItems);
foreach (string item in vSelectedItems)
{
   listView1.Items.Remove(item);
}
listView1.EndUpdate();

the BeginUpdate() and EndUpdate() methods will optimize the performance of this action - the listView will not refresh itself during activities between these methods call.

Try this

   private void button2_Click(object sender, EventArgs e)
        {
           for(int i = 0 ; i < listView1.SelectedItems.Count; i ++)
               listView1.Items.Remove(listView1.SelectedItems[i]);

        }
Ozan
while (listView1.SelectedItems.Count > 0)
{
    listView1.Items.Remove(listView1.SelectedItems[0]);
}
$x = @()

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 

$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = "hello first"
$objForm.Size = New-Object System.Drawing.Size(600,600) 
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True

$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") 
    {
        foreach ($objItem in $objListbox.SelectedItems)
            {$x += $objItem}
        $objForm.Close()
    }
    })

$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") 
    {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(10,250)
$OKButton.Size = New-Object System.Drawing.Size(85,30)
$OKButton.Text = "Start Check"

$MoveRight = New-Object System.Windows.Forms.Button
$MoveRight.Location = New-Object System.Drawing.Size(200,80)
$MoveRight.Size = New-Object System.Drawing.Size(70,20)
$MoveRight.Text = ">>"

$objForm.Controls.Add($MoveRight)


$MoveRight.Add_Click(
   {
        foreach ($objItem in $objListbox.SelectedItems)
            {[void] $objListbox2.Items.Add($objItem)}


            $selectedItems = $objListbox.SelectedItems;

if ($objListbox.SelectedIndex -ne -1)
{ 
    for ($i = $selectedItems.Count - 1; $i -ge 0; $i--){$objListbox.Items.Remove($SelectedItems[$i])}
}
})

$MoveLeft = New-Object System.Windows.Forms.Button
$MoveLeft.Location = New-Object System.Drawing.Size(200,120)
$MoveLeft.Size = New-Object System.Drawing.Size(70,20)
$MoveLeft.Text = "<<"

$objForm.Controls.Add($MoveLeft)

$MoveLeft.Add_Click(
   {

        foreach ($objItem in $objListbox2.SelectedItems)
            {[void] $objListbox.Items.Add($objItem)
        }


            $selectedItems = $objListbox2.SelectedItems;

if ($objListbox2.SelectedIndex -ne -1)
{ 
    for ($i = $selectedItems.Count - 1; $i -ge 0; $i--){$objListbox2.Items.Remove($SelectedItems[$i])}
}

})

$Clearconsole = New-Object System.Windows.Forms.Button
$Clearconsole.Location = New-Object System.Drawing.Size(505,320)
$Clearconsole.Size = New-Object System.Drawing.Size(70,20)
$Clearconsole.Text = "Clr console"

$objForm.Controls.Add($Clearconsole)

$Clearconsole.Add_Click(
   {
     $outputBox.Clear()

   })

$MoveAll = New-Object System.Windows.Forms.Button
$MoveAll.Location = New-Object System.Drawing.Size(200,160)
$MoveAll.Size = New-Object System.Drawing.Size(70,20)
$MoveAll.Text = "ALL"

$objForm.Controls.Add($MoveAll)


$MoveAll.Add_Click(
   {
        foreach ($objItem in $objListbox.Items)
            {[void] $objListbox2.Items.Add($objItem)}


$objListbox.Items.Clear()
    $outputBox.text="test"
   })

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,320) 
$objLabel.Size = New-Object System.Drawing.Size(280,20) 
$objLabel.Text = "Console Window"
$objForm.Controls.Add($objLabel) 

$outputBox = New-Object System.Windows.Forms.TextBox 
$outputBox.Location = New-Object System.Drawing.Size(10,350) 
$outputBox.Size = New-Object System.Drawing.Size(565,200) 
$outputBox.MultiLine = $True 

$outputBox.ScrollBars = "Vertical" 

$objForm.Controls.Add($outputBox) 

$OKButton.Add_Click(
   {
        foreach ($objItem in $objListbox.SelectedItems)
            {$x += $objItem}
        $objForm.Close()
   })

$objForm.Controls.Add($OKButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20) 
$objLabel.Size = New-Object System.Drawing.Size(280,20) 
$objLabel.Text = "Please make a selection from the list below:"
$objForm.Controls.Add($objLabel) 

$objListbox = New-Object System.Windows.Forms.Listbox 
$objListbox.Location = New-Object System.Drawing.Size(10,40) 
$objListbox.Size = New-Object System.Drawing.Size(160,20) 

$objListbox.SelectionMode = "MultiExtended"

[void] $objListbox.Items.Add("a")
[void] $objListbox.Items.Add("b")
[void] $objListbox.Items.Add("c")
[void] $objListbox.Items.Add("d")
[void] $objListbox.Items.Add("e")

$objListbox.Height = 200
$objListBox.Sorted = $True
$objForm.Controls.Add($objListbox) 
$objForm.Topmost = $True

$objListbox2 = New-Object System.Windows.Forms.Listbox 
$objListbox2.Location = New-Object System.Drawing.Size(315,40) 
$objListbox2.Size = New-Object System.Drawing.Size(160,20) 

$objListbox2.SelectionMode = "MultiExtended"

$objListbox2.Height = 200
$objListBox2.Sorted = $True
$objForm.Controls.Add($objListbox2) 
$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

$x
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!