Ola pessoal,
Estou com um probleminha e não consigo resolver...
Queria fazer a soma de alguns valores que estão em um listview que eu preenchi. Eu consegui faze a soma de um outro medo, mas queria saber como faço para fazer a soma de uma coluna, apenas uma coluna. Não consegui fazer esse método da soma da coluna.
Alguém pode me explicar?
Eis o código que usei para criar as linhas e colunas no Listview:
Private Sub Criar_ListView()
'Private usado para Criar a ListView
Dim LV As New ListView
ListView1.Bounds = ListView1.Bounds 'New Rectangle(New Point(10, 10), New Size(300, 200))
listView1.View = View.Details 'Define a exibição
listView1.LabelEdit = False ' Usuario nao pode alterar nada na listview
listView1.AllowColumnReorder = True 'Permite alterar a ordem das linhas
ListView1.CheckBoxes = True 'Exibe os Checkbox's
listView1.GridLines = True 'Exibe as linhas
listView1.Sorting = SortOrder.Ascending 'Ordena os itens em ordem alfabética
' Cria coluna para os itens e subitens
ListView1.Columns.Add("Código", 80, HorizontalAlignment.Left)
ListView1.Columns.Add("Produto", 80, HorizontalAlignment.Left)
ListView1.Columns.Add("Quantidade", 80, HorizontalAlignment.Left)
ListView1.Columns.Add("Preço da Venda Unitária", 80, HorizontalAlignment.Left)
ListView1.Columns.Add("Valor Total", 80, HorizontalAlignment.Left)
' inclui o Listive a coleção de controles
Me.Controls.Add(listView1)
End Sub
Os itens são adicionados depois com outro comando, e eu queria fazer a soma da coluna Valor Total (Esta em vermelho) e mostrar em um textbox.
- Home
- >
- Fórum
- >
- Profissional
- >
- Programação, Sc...
- >
- Listview Visual Basic 201...
Itere entre todas as linhas, somando o valor da última coluna:
[code=rich]
Dim i as Integer
Dim Soma as Single = 0
For i = 0 to ListView1.Items.Count - 1
Soma += Convert.ToSingle(ListView1.Items(i).Subitems(Numerodacoluna).Text)
Next
[/code]Troque Numerodacoluna pelo número da coluna que for somar. No seu caso, acredito ser a coluna 4. Não testei o código, mas acredito que dê para a entender a lógica. Basicamente acesso um subitem específico (que no seu caso representa a coluna) de cada item (linha) e somo na variável Soma. Antes disso eu converto ela para Single, caso contrário você estaria somando uma String.
Fergo,Mas com este codigo, o programa nao esta somando a coluna, e sim os itens adicionados. Esse codigo eu usei, eu queria somar a coluna, pois assim, se eu remover o item da lista, automaticamente, o textbox fara uma nova conta subtraindo o valor total removido.
Acho que ficou meio confuso né kkkkkk
Flavio Vissoto
[EMAIL="vissoto_flavio@hotmail.com"]vissoto_flavio@hotmail.com[/EMAIL]
Monstergame - Vampiro (Game de Browser)
O que você quer dizer por "somar a coluna"? Eu entendi que você quer somar o valor de cada item em determinada coluna.
Eu quero somar todos os valores da coluna 4 e mostrar o valor uma um textbox, e quando eu excluir um alinha do listview, o valor correspondente a esta linha seja subtraído do textbox.
Acho que nao tinha explicado direito... kkk
Flavio Vissoto
[EMAIL="vissoto_flavio@hotmail.com"]vissoto_flavio@hotmail.com[/EMAIL]
Monstergame - Vampiro (Game de Browser)
O código que postei faz exatamente isso. Cabe a você apenas atribuir o valor da soma ao textbox e refazer o cálculo sempre que houver alguma alteração na lista.
Sim, realmente ele faz a soma sim. Mas é que eu nao consegui caso eu exclua algum item, porque se eu excluir ele nao subtrai.
Pode me ajudar???
Flavio Vissoto
[EMAIL="vissoto_flavio@hotmail.com"]vissoto_flavio@hotmail.com[/EMAIL]
Monstergame - Vampiro (Game de Browser)
Fergo,
Finalmente consegui fazer o que eu queria.
Agora eu adiciono itens na lista e o textbox soma e caso eu retire, o textbox subtrai.
esta é a formula para somar os valores:
'Private usado para somar os valroes dos itens adicionados na lita.
Dim i As Integer
Dim Soma As Single = 0
For i = 0 To ListView1.Items.Count - 1
Soma += CDbl(ListView1.Items(i).SubItems(4).Text)
Next
TextBox5.Text = CDbl(Soma)
End Sub
E esta é para deletar o item da listview e retirar o valor:
'Private usado para retirar o Item da Listview
Dim soma As Decimal
Dim linha As Integer = 0
Dim Resposta As DialogResult = Windows.Forms.MessageBox.Show("Confirma Exclusão do Item da Lista de Compras?", _
"Deletar Itens Lista", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question)
If Resposta = Windows.Forms.DialogResult.Yes Then
For Each ListItem As ListViewItem In ListView1.Items
If ListItem.Checked Then
For x = 1 To 1
'Listitem.Index = Usado para retirar o item atual que esta selecionado.
soma += Convert.ToSingle(ListView1.Items(ListItem.Index).SubItems(4).Text) 'Retira o Valor da Soma Total
ListView1.Items.RemoveAt(ListItem.Index) 'Retira o Item da Lista
Next
End If
Next
End If
TextBox5.Text = CDbl(TextBox5.Text) - soma
FormatarValores()
End Sub
Sei que não é o melhor algorítimo, mas funcionou legal...
Vlw manolo pelas Dicas...
Flavio Vissoto
[EMAIL="vissoto_flavio@hotmail.com"]vissoto_flavio@hotmail.com[/EMAIL]
Monstergame - Vampiro (Game de Browser)