none
Como procurar dados em uma list box C# ? RRS feed

  • Pergunta

  • Tenho uma "listbox", um "label" e um" button", ao clicar no botão o programa irá procurar uma palavra com o texto escrito do label e irá sublinhar a palavra encontrada no "listbox", caso não encontre exibirá uma mensagem como que eu farei isso? Poste o código!

    Também queria colocar dois botões de ordem alfabética dos "listboxs" (A/Z E Z/A),como posso fazer isso, poste o código?

     

    Vlw!

    domingo, 24 de outubro de 2010 20:13

Respostas

  • 1 - Para Sublinhar:

    Seta a propriedade do Listbox DrawItem para OwnerDrawFixed.
    Cria uma Variável Global para armazenar o Itens encontrados:

      Private itemsEncontrados As List(Of Integer)

    Coloque o código abaixo no Click do Botão de Busca:

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        itemsEncontrados = New List(Of Integer)
        For i As Integer = 0 To ListBox1.Items.Count - 1
          If ListBox1.Items(i).ToString = SeuLabel.Text Then
            itemsEncontrados.Add(i)
          End If
        Next
        ListBox1.Refresh()
      End Sub

    No Evento DrawItem do ListBox coloque o seguinte Código:

      Private Sub ListBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
        e.DrawBackground()
        Dim textFont As Font
        If itemsEncontrados IsNot Nothing AndAlso itemsEncontrados.Contains(e.Index) Then
          textFont = New Font(e.Font.FontFamily, e.Font.Size, FontStyle.Underline)
        Else
          textFont = e.Font
        End If

        e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), textFont, New SolidBrush(e.ForeColor), RectangleF.op_Implicit(e.Bounds))
        e.DrawFocusRectangle()
      End Sub

    2 - Para Ordenar de A/Z:

        ListBox1.Sorted = True

    3 - Para Ordenar de Z/A

        ListBox1.Sorted = True
        ListBox1.Update()

        Dim lista As New List(Of String)
        For Each item As String In ListBox1.Items
          lista.Add(item)
        Next

        lista.Reverse()
        ListBox1.Items.Clear()
        ListBox1.Sorted = False
        ListBox1.Items.AddRange(lista.ToArray)


    Bruno Ferreira de Souza
    Analista Desenvolvedor .NET
    MCP - Windows Form
    • Marcado como Resposta Felipe Guerra segunda-feira, 25 de outubro de 2010 11:04
    segunda-feira, 25 de outubro de 2010 01:21