1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Resolvido] Vb.net

Discussão em 'Programação' iniciada por Ruben_Barbosa, 29 de Dezembro de 2008. (Respostas: 5; Visualizações: 724)

  1. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Bom dia Pessoal,

    Como faço para comparar um valor de uma textbox com uma listview de 4 colunas.

    Isto é so quero comparar o valor da da textbox com a 1 coluna da listview.

    De forma a não poder repetir o mesmo valor.
     
    Última edição: 29 de Dezembro de 2008
  2. PNDmartins

    PNDmartins Power Member

    Vai aqui um exemplo testado. Neste exemplo, procuro o texto da textbox em todos os items de todas as colunas até achar uma correspondência. Só tens que modificar para procurar apenas na coluna que tu queres.

    Código:
    For Each I As ListViewItem In ListView1.Items
    
                If LCase(TextBox1.Text.Trim) = LCase(I.Text) Then
                    MsgBox("Coluna 0 - Index " & I.Index)
                    exit for
                ElseIf LCase(TextBox1.Text.Trim) = LCase(I.SubItems(1).Text) Then
                    MsgBox("Coluna 1 - Index " & I.Index)
                    exit for
                ElseIf LCase(TextBox1.Text.Trim) = LCase(I.SubItems(2).Text) Then
                    MsgBox("Coluna 2 - Index " & I.Index)
                    exit for
                ElseIf LCase(TextBox1.Text.Trim) = LCase(I.SubItems(3).Text) Then
                    MsgBox("Coluna 3 - Index " & I.Index)
                    exit for
                End If
    
     Next
     
  3. Ruben_Barbosa

    Ruben_Barbosa Power Member

    eu fiz como disseste mas 1 declarei o I

    Fiz Dim I as string

    e Dps

    For Each I As ListViewItem In ListView1.Items

    If LCase(TextBox2.Text.Trim) = LCase(I.Text) Then
    MsgBox("Não Pode Inserir o mesmo Valor " & I.Index)
    listview1.selectitem(0).remove
    exit for
    end if
    next

    MAs não da lol n consigo declarar a variavel I :S omfg
     
  4. PNDmartins

    PNDmartins Power Member

    Dessa forma estás a declarar o objecto 2 vezes, o que não é necessário visto que ao fazeres "for each I as listviewitem" o proprio ciclo está a declarar o item por ti. Ao fazeres um remove dentro de um ciclo for each por items, o ciclo arrebenta. Para fazeres um remove (o que para o que tu queres não é necessário) tens que ir por indexs.

    Outra coisa é usares a variavel declarada como "Dim i as string" e depois no ciclo estares a utilizar essa mesma variavel. Ele não deixa porque existe uma duplicação de variaveis e nao consegue declarar a variavel I necessaria dentro do ciclo. Se fossem do mesmo tipo ainda dava agora assim...
     
    Última edição: 29 de Dezembro de 2008
  5. ribeiro55

    ribeiro55 Power Member

    Isso não foi testado. Remove dentro de um ciclo For Each não é permitido.

    Eis uma solução fácil:

    Código:
            Dim TextoAInserir As String = "Couve"
    
            Dim Achei As Boolean = False
            For Each LVI As ListViewItem In ListView1.Items
                If LVI.Text = TextoAInserir Then
                    Achei = True
                    Exit For
                End If
    
            Next
    
            If Achei = False Then
                Dim LVI As New ListViewItem
                LVI.Text = TextoAInserir
                LVI.SubItems.Add("blabla")
                LVI.SubItems.Add("blabla2")
                LVI.SubItems.Add("blabla3")
                ListView1.Items.Add(LVI)
            Else
                MsgBox("Isso já existe pah!")
            End If
    E "Dim I as String" ? Já de si é mau, porque a variável é "declarada" dentro do ciclo For Each, mas... não seria As ListViewItem, se fosse o caso ?
     
    Última edição: 29 de Dezembro de 2008
  6. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Pessoal Bgd mesmo ;)
     

Partilhar esta Página