none
Navegar em um listview RRS feed

  • Pergunta

  • Olá pessoal!

    Procurei em diversos sites, mas não achei uma solução para o que estou precisando.

    Tenho um listview com n linhas, e preciso criar um botão que selecione a linha anterior ou a próxima (como botões de um music player).

    Tem como fazer isso?

    terça-feira, 3 de maio de 2011 02:30

Respostas

  • Rodrigo,

    Segue um exemplo de como fazer.

    Public Class Form1
    
      Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUp.Click
    
        ' recupera o item selecionado
        Dim itemSelecionado As Int32 = GetItemSelected(ListView1)
    
        ' verifica se o item e menor igual a zero
        If (itemSelecionado <= 0) Then
    
          ' seleciona o primeiro item
          SelectItem(ListView1, 0)
        Else
    
          ' seleciona o item selecionado menos 1
          SelectItem(ListView1, itemSelecionado - 1)
    
        End If
    
      End Sub
    
      Private Sub btnDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDown.Click
    
        ' recupera o item selecionado
        Dim itemSelecionado As Int32 = GetItemSelected(ListView1)
    
        ' verifica se o item selecionado e maior igual a quantidade de itens do listview menos 1
        If (itemSelecionado >= GetCount(ListView1) - 1) Then
    
          ' seleciona o ultimo item
          SelectItem(ListView1, GetCount(ListView1) - 1)
        Else
    
          ' seleciona o item selecionado mais 1
          SelectItem(ListView1, itemSelecionado + 1)
    
        End If
    
      End Sub
    
      Private Function GetItemSelected(ByVal lst As ListView) As Int32
    
        ' recupera o item selecionado
        Return lst.SelectedItems(0).Index
    
      End Function
    
      Private Function GetCount(ByVal lst As ListView) As Int32
    
        ' recupera a quantidade de itens no listview
        Return lst.Items.Count
    
      End Function
    
      Private Sub SelectItem(ByVal lst As ListView, ByVal index As Int32)
    
        ' seleciona o item de acordo com o indice (parametro)
        lst.Items(index).Selected = True
        lst.Items(index).Focused = True
        lst.Select()
    
      End Sub
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        ' desabilita o multiselect
        ListView1.MultiSelect = False
    
        ' popula listview
        ListView1.Items.Add("item 1")
        ListView1.Items.Add("item 2")
        ListView1.Items.Add("item 3")
    
        'seleciona o primeiro item
        SelectItem(ListView1, 0)
    
      End Sub
    
    End Class
    
    


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria
    terça-feira, 3 de maio de 2011 14:17

Todas as Respostas

  • Rodrigo,

    Segue um exemplo de como fazer.

    Public Class Form1
    
      Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUp.Click
    
        ' recupera o item selecionado
        Dim itemSelecionado As Int32 = GetItemSelected(ListView1)
    
        ' verifica se o item e menor igual a zero
        If (itemSelecionado <= 0) Then
    
          ' seleciona o primeiro item
          SelectItem(ListView1, 0)
        Else
    
          ' seleciona o item selecionado menos 1
          SelectItem(ListView1, itemSelecionado - 1)
    
        End If
    
      End Sub
    
      Private Sub btnDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDown.Click
    
        ' recupera o item selecionado
        Dim itemSelecionado As Int32 = GetItemSelected(ListView1)
    
        ' verifica se o item selecionado e maior igual a quantidade de itens do listview menos 1
        If (itemSelecionado >= GetCount(ListView1) - 1) Then
    
          ' seleciona o ultimo item
          SelectItem(ListView1, GetCount(ListView1) - 1)
        Else
    
          ' seleciona o item selecionado mais 1
          SelectItem(ListView1, itemSelecionado + 1)
    
        End If
    
      End Sub
    
      Private Function GetItemSelected(ByVal lst As ListView) As Int32
    
        ' recupera o item selecionado
        Return lst.SelectedItems(0).Index
    
      End Function
    
      Private Function GetCount(ByVal lst As ListView) As Int32
    
        ' recupera a quantidade de itens no listview
        Return lst.Items.Count
    
      End Function
    
      Private Sub SelectItem(ByVal lst As ListView, ByVal index As Int32)
    
        ' seleciona o item de acordo com o indice (parametro)
        lst.Items(index).Selected = True
        lst.Items(index).Focused = True
        lst.Select()
    
      End Sub
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        ' desabilita o multiselect
        ListView1.MultiSelect = False
    
        ' popula listview
        ListView1.Items.Add("item 1")
        ListView1.Items.Add("item 2")
        ListView1.Items.Add("item 3")
    
        'seleciona o primeiro item
        SelectItem(ListView1, 0)
    
      End Sub
    
    End Class
    
    


    se a resposta foi útil, classifique :)
    ate mais,

    Rodrigo Soria
    terça-feira, 3 de maio de 2011 14:17
  • usa http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.movenext.aspx
    One word frees us of all the weight and pain of life: that word is love.
    terça-feira, 3 de maio de 2011 17:11
    Moderador