EXCLUIR ITEM DE LISTVIEW

SANROMAN 05/01/2015 22:12:14
#443610
Boa noite

Uso o seguinte sódigo para excluir um item de listview:

Private Sub ExcluirItens()

Dim valor As Decimal
valor = 0

For Each ListItem As ListViewItem In listVendaDireta.Items

If Not (ListItem.Checked) Then
MsgBox([Ô]Não existem itens a serem excluidos.[Ô], MsgBoxStyle.Critical, [Ô]ATENÇÃO[Ô])
Else
valor += Convert.ToDecimal(ListItem.SubItems(1).Text)
listVendaDireta.Items.Remove(ListItem)
End If

Next

txtTotalVenda.Text = Convert.ToDecimal(txtTotalVenda.Text) - valor

End Sub

Ele funciona se tenho apenas um item. Se tenho mais de um item no listview dispara a mensagem do código para cada listview que não está marcado até chegar no listview marcado e exclui-lo.

Se puderem me ajudar na solução desse problema fico agradecido.
JABA 05/01/2015 23:58:45
#443615
O que está acontecendo de errado é que você está excluindo um item dentro de um loop. Tente usar o comando [Ô]For[Ô] assim:

For i as integer = 0 to listVendaDireta.Items.count-1

[ô]Seu codigo de exclusao.

Next
PEGUDO 06/01/2015 06:30:08
#443617
Cara,
Já que você habilitou os CheckBoxes, pegue somente os marcados para agilizar teu código e exclua-os:

        [txt-color=#0000f0]Dim[/txt-color] colecao [txt-color=#0000f0]As [/txt-color]ListView.CheckedListViewItemCollection = ListView1.CheckedItems

[txt-color=#0000f0]For Each[/txt-color] item [txt-color=#0000f0]As[/txt-color] ListViewItem[txt-color=#0000f0] In[/txt-color] colecao
ListView1.Items.RemoveAt(item.Index)
[txt-color=#0000f0]Next[/txt-color]

MsgBox([txt-color=#e80000][Ô]acabou[Ô][/txt-color])

FOXMAN 06/01/2015 09:02:37
#443624
Resposta escolhida
Tente dessa forma :

Private Sub ExcluirItens()

Dim semItens as boolean=true
Dim valor As Decimal
valor = 0

For Each ListItem As ListViewItem In listVendaDireta.Items

If (ListItem.Checked) Then
valor += Convert.ToDecimal(ListItem.SubItems(1).Text)
listVendaDireta.Items.Remove(ListItem)
semItems = false
End If

Next

If semitems then
MsgBox([Ô]Não existem itens a serem excluidos.[Ô], MsgBoxStyle.Critical, [Ô]ATENÇÃO[Ô])
else
txtTotalVenda.Text = Convert.ToDecimal(txtTotalVenda.Text) - valor
end if

End Sub


SANROMAN 06/01/2015 12:20:08
#443630
Muito obrigado a todos.

Usei o código criado pelo FOXMAN e funcionou perfeitamente.

Estou dando como encerrado o tópico.
Tópico encerrado , respostas não são mais permitidas