EXCLUIR ITEM DE LISTVIEW
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.
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.
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
For i as integer = 0 to listVendaDireta.Items.count-1
[ô]Seu codigo de exclusao.
Next
Cara,
Já que você habilitou os CheckBoxes, pegue somente os marcados para agilizar teu código e exclua-os:
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])
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
Muito obrigado a todos.
Usei o código criado pelo FOXMAN e funcionou perfeitamente.
Estou dando como encerrado o tópico.
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