none
Checked Combobox em VB RRS feed

  • Discussão Geral

  • Olá pessoal,

     

    Preciso criar um combobox onde eu possa selecionar várias opções, ou seja, um combobox com checagem, já pesquisei em vários sites e tópicos, já procurei por ToolKits, mas não obtive sucesso e também, o visual studio não oferece esta ferramenta.

     

    Caso vocês consigam achar algum tópico ou tutorial à respeito ficarei muito grato!

     

    sexta-feira, 27 de junho de 2014 02:56

Todas as Respostas

  • Hudson, bom dia!!!

    Claro que não sei o cenário da sua aplicação, mas uma opinião, ao invés de usar um combo box que leva a ideia ao usuário por questões de costume mesmo de escolher uma opção somente, não seria melhor usar algo mais intuitivo para escolher várias opções? Geralmente CheckBox são bem legais para isso, pois fica, digamos "na cara" para o usuário que ali pode escolher N opções.

    Uma vez tive esse mesmo dilema (rs) e um CheckBoxList caiu muito bem, claro, não sei o cenário que você está trabalhando, mas dê uma olhada nesse exemplo...

    http://www.java2s.com/Code/VB/GUI/CheckBoxListGetselectedItems.htm

    Abraço!!!

    sexta-feira, 27 de junho de 2014 03:11
  • Beleza Diego, muito obrigado!

    A minha aplicação é em VB, comecei a utilizar o checkedlistbox enviando o valuemember selecionado para um textbox,  que por sua vez precisa ser alimentado por uma consulta Oracle, onde o select utiliza a função CONCAT  para unir dados de dua colunas da tabela.

    Agora estou tendo problemas na visualização do Checkedlistbox, onde só aparece "System.data.Datarowsview" ao invés de aparecer o DataSource.

    Ao selecionar algumas opções "System.data.Datarowsview", o valuemember aparece no meu textbox, mas não aparece a visualização correta para o usuário...

    Você sabe do que se trata?

    quinta-feira, 3 de julho de 2014 20:55
  • vou te passar um codigo,acredito que voce possa implementa-lo apesar de eu testar no sqlserver.

    Classe de conexao:

    Option Explicit On
    Option Strict On
    
    Imports System.Data.SqlClient
    
    Public Class Conexao
        'implementando a interface IDisposable para descartar materiais que ja nao sao mais usadados
        Implements IDisposable
        'crio um objeto privado para construir a conexao de string com o banco de dados
        Private xConexao As New SqlConnection
        'deixo publico o metodo somente leitura para que outras classes possam obter a string
        Public ReadOnly Property Conexao() As SqlConnection
            Get
                Return xConexao
            End Get
        End Property
        'construtor da classe que constroe a conexao
        Public Sub New()
            Dim xConstrutor As New SqlConnectionStringBuilder
            xConstrutor("Server") = "EDWARD\SDKCLIENTE"
            xConstrutor("Database") = "Master"
            xConstrutor("Trusted_Connection") = "true"
            'atribuo a conexao montada ao objeto connectionstring
            Me.xConexao.ConnectionString = xConstrutor.ConnectionString
        End Sub
    
        Private disposedValue As Boolean = False        ' Para detectar chamadas redundantes
    
        ' IDisposable
        Protected Overridable Sub Dispose(ByVal disposing As Boolean)
            If Not Me.disposedValue Then
                If disposing Then
                    ' A FAZER: liberar outro estado (objetos gerenciados).
                End If
                ' A FAZER: liberar seu próprio estado (objetos não gerenciados).
                ' A FAZER: definir campos grandes como nulos.
            End If
            Me.disposedValue = True
        End Sub
    
    #Region " IDisposable Support "
        ' Código adicionado pelo Visual Basic para implementar corretamente o padrão descartável.
        Public Sub Dispose() Implements IDisposable.Dispose
            ' Não altere este código. Coloque o código de limpeza em Dispose(ByVal disposing As Boolean) acima.
            Dispose(True)
            GC.SuppressFinalize(Me)
        End Sub
    #End Region
    
    End Class

    Form Principal:

    Option Explicit On
    Option Strict On
    
    Imports System.Data.SqlClient
    Imports System.Data
    
    Public Class Form1
        Sub New()
            ' Esta chamada é necessária para o Windows Form Designer.
            InitializeComponent()
            ' Adicione qualquer inicialização após a chamada InitializeComponent().
            'delegate do evento click do controle checkedbox
            AddHandler CheckedListBox1.ItemCheck, AddressOf Me.CheckedListBox1_Click
    
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim xCon As New Conexao
            Dim xDataTable As New DataTable
            'efetuo o select normalmente
            Using DataAdapter As New SqlDataAdapter("SELECT NOME FROM TESTE", xCon.Conexao)
                Try
                    DataAdapter.Fill(xDataTable)
                    'testo a quantidade de linha que tem o select,se tiver mais que 0,chamar a Sub CarregaList
                    If (xDataTable.Rows.Count > 0) Then
                        Call CarregaList(xDataTable)
                    End If
                Catch ex As Exception
                Finally
                    xCon.Dispose()
                    xDataTable.Dispose()
                End Try
                
            End Using
        End Sub
    
        Private Sub CarregaList(ByVal xData As DataTable)
            Me.CheckedListBox1.Items.Clear()
            For Each xResul As DataRow In xData.Rows
                'Acredito que voce está tendo problemas aqui
                'na hora que recebe o valor,precisa-se setar de onde está se pegando
                'entao,usei o Item(0) pois eu sei que preciso da coluna 0 (NOME) como está no meu select
                Me.CheckedListBox1.Items.Add(xResul.Item(0))
            Next
        End Sub
    
        Private Sub CheckedListBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox1.Click
            Dim Chk As CheckedListBox = CType(sender, CheckedListBox)
            Me.TextBox1.Text = Nothing
            For Each xVal As String In Chk.CheckedItems
                'adicionos os valores checados dentro do textbox
                Me.TextBox1.Text += String.Concat(xVal, " ")
            Next
        End Sub
    End Class

    Microsoft Technology Associate (MTA)



    • Editado Eduardo xUni quinta-feira, 10 de julho de 2014 00:06
    quarta-feira, 9 de julho de 2014 23:19