.NET - Apresentando o controle CheckedListBox (C#/VB .NET)


  Neste artigo vou apresentar o controle CheckedListBox da plataforma .NET mostrando como funciona e como podemos usá-lo em aplicações Windows Forms.

O controle CheckedListBox é similar ao controle ListBox, possuindo todos os recursos deste controle, mas exibe um checkbox ao lado do nome do item no controle de lista permitindo que o usuário selecione um ou mais itens marcando o checkbox na caixa de listagem.

Neste artigo vou apresentar os recursos básicos do controle CheckListBox.

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução e o projeto VB .NET e o C# no Visual Studio Community 2015

Abra o VS 2015 Community  e clique em New Project;

Selecione Other Project Types e clique em Visual Studio Solution e selecione Blank Solution;

Informe o nome Controle_CheckedListBox e clique em ok;

A seguir no menu File clique em Add -> New Project ;

Selecione Visual C# -> Windows e marque o template Windows Forms Application;

Informe o nome CheckedListBox_CSharp;

A seguir no menu File clique em Add -> New Project ;

Selecione Visual Basic -> Windows e marque o template Windows Forms Application;

Informe o nome CheckedListBox_VBNET;

Dessa forma teremos 1 solução contendo um projeto Visual Basic e um projeto C# que iremos desenvolver e usar no artigo.

Usando o controle CheckedListBox

Podemos adicionar objetos na caixa de listagem em tempo de projeto e de execução.

Em tempo de projeto basta arrastar e soltar o controle CheckedListBox a partir da ToolBox no formulário e usando a propriedade items usar o String Collection Editor para informar os itens a serem incluídos na listagem:

Em tempo de execução podemos atribuir valores a um array de objetos e usar o método AddRange para incluí-los na listagem; a lista irá exibir o valor da string para cada objeto:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim checkedListBox1 As New CheckedListBox()
        checkedListBox1.Items.AddRange(New Object() {"Segunda-feira", "Terça-Feira",
                                                                    "Quarta-Feira", "Quinta-feira", "Sexta-Feira", "Sábado",
            "Domingo"})
        checkedListBox1.Location = New System.Drawing.Point(10, 15)
        checkedListBox1.Size = New System.Drawing.Size(120, 150)
        Me.Controls.Add(checkedListBox1)
    End Sub
 private void btnIncluirControle1_Click(object sender, EventArgs e)
  {
           CheckedListBox checkedListBox1 = new CheckedListBox();
            checkedListBox1.Items.AddRange(new object[]
            {
                "Segunda-feira","Terça-Feira","Quarta-Feira","Quinta-feira","Sexta-Feira", "Sábado", "Domingo"
            });
            checkedListBox1.Location = new System.Drawing.Point(10, 15);
            checkedListBox1.Size = new System.Drawing.Size(120, 150);
            this.Controls.Add(checkedListBox1);
  }

Podemos também incluir itens no controle em tempo de execução usando o método Add.  O Controle CheckedListBox suporta 3 estados através da enumeração CheckState:

  1. Checked

  2. UnChecked

  3. Indeterminate

     private void btnIncluirControl2_Click(object sender, EventArgs e)
        {
            CheckedListBox checkedListBox1 = new CheckedListBox();
            checkedListBox1.Location = new System.Drawing.Point(250, 15);
            checkedListBox1.Size = new System.Drawing.Size(120, 150);
            this.Controls.Add(checkedListBox1);                   
            checkedListBox1.Items.Add("Segunda-feira", CheckState.Checked);
            checkedListBox1.Items.Add("Terça-Feira", CheckState.Unchecked);
            checkedListBox1.Items.Add("Quarta-Feira", CheckState.Indeterminate);
            checkedListBox1.Items.Add("Quinta-Feira", CheckState.Unchecked);
            checkedListBox1.Items.Add("Sexta-Feira", CheckState.Unchecked);
            checkedListBox1.Items.Add("Sábado", CheckState.Unchecked);
            checkedListBox1.Items.Add("Domingo", CheckState.Unchecked);
        }
  Private Sub btnIncluirControl2_Click(sender As Object, e As EventArgs) Handles btnIncluirControl2.Click
        Dim checkedListBox1 As New CheckedListBox()
        checkedListBox1.Location = New System.Drawing.Point(250, 15)
        checkedListBox1.Size = New System.Drawing.Size(120, 150)
        Me.Controls.Add(checkedListBox1)
        checkedListBox1.Items.Add("Segunda-feira", CheckState.Checked)
        checkedListBox1.Items.Add("Terça-Feira", CheckState.Unchecked)
        checkedListBox1.Items.Add("Quarta-Feira", CheckState.Indeterminate)
        checkedListBox1.Items.Add("Quinta-Feira", CheckState.Unchecked)
        checkedListBox1.Items.Add("Sexta-Feira", CheckState.Unchecked)
        checkedListBox1.Items.Add("Sábado", CheckState.Unchecked)
        checkedListBox1.Items.Add("Domingo", CheckState.Unchecked)
    End Sub

Executando o projeto iremos obter a página abaixo:

C# VB .NET

Para interagir com os elementos selecionados podemos usar as propriedades :

Abaixo um exemplo onde percorremos os itens selecionados :

 private void btnInteragir_Click(object sender, EventArgs e)
  {
            // verifica se existem itens marcados
            if (checkedListBox1.CheckedItems.Count != 0)
            {
                // percorre todos os itens marcados
                // e verifica se um item especifico foi marcado
                for (int i = 0; i <= checkedListBox1.CheckedItems.Count - 1; i++)
                {
                    if (checkedListBox1.CheckedItems[i].ToString() == "Domingo")
                    {
                        MessageBox.Show("Domingo foi marcado");
                    }
                }
            }
            //pecorre os itens marcados e exibe o titulo e o estado do item
            foreach(object i in checkedListBox1.CheckedItems)
            {
                MessageBox.Show("Item com titulo : " + "" + i.ToString() + ""
                                + ", esta marcado. O estado é : " +
                                checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(i)).ToString() + ".");
            }
  }
 Private Sub btnInteragir_Click(sender As Object, e As EventArgs) Handles btnInteragir.Click
    
    ' verifica se exitem itens marcados
        If checkedListBox1.CheckedItems.Count <> 0 Then
            ' percorre todos os itens marcados
            ' e verifica se um item especifico foi marcado
            For i As Integer = 0 To checkedListBox1.CheckedItems.Count - 1
                If checkedListBox1.CheckedItems(i).ToString() = "Domingo" Then
                    MessageBox.Show("Domingo foi marcado")
                End If
            Next
        End If
        'pecorre os itens marcados e exibe o titulo e o estado do item
        For Each i As Object In checkedListBox1.CheckedItems
            MessageBox.Show("Item com titulo : " + "" + i.ToString() + "" + ", esta marcado. O estado é : " + _
              checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(i)).ToString() + ".")
        Next
    End Sub
C# VB .NET

Executando o projeto teremos o seguinte resultado:

Para marcar ou desmarcar todos os itens de um CheckedListBox podemos fazer da seguinte forma:

Primeiro inclua um controle checkBox no formulário e a seguir defina o código o no evento click de um botão de controle para chamar a função SelecionaTodos() passando o valor true ou false:

  private void btnMarcaDesmarca_Click(object sender, EventArgs e)
        {
            if (chkSeleciona.Checked)
            {
                 SelecionaTodos(true);
            }
            else
            {
                SelecionaTodos(false);
            }
        }
        private void SelecionaTodos(bool CheckThem)
        {
            for (int i = 0; i <= (checkedListBox1.Items.Count - 1); i++)
            {
                if (CheckThem)
                {
                    checkedListBox1.SetItemCheckState(i, CheckState.Checked);
                }
                else
                {
                    checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
                }
            }
        }

 

 Private Sub btnMarcaDesmarca_Click(sender As Object, e As EventArgs) Handles btnMarcaDesmarca.Click
        If chkSeleciona.Checked Then
            SelecionaTodos(True)
        Else
            SelecionaTodos(False)
        End If
    End Sub
    Private Sub SelecionaTodos(CheckThem As Boolean)
        For i As Integer = 0 To (checkedListBox1.Items.Count - 1)
            If CheckThem Then
                checkedListBox1.SetItemCheckState(i, CheckState.Checked)
            Else
                checkedListBox1.SetItemCheckState(i, CheckState.Unchecked)
            End If
        Next
    End Sub
C# VB .NET

Executando o projeto teremos o seguinte resultado:

Pegue o projeto completo aqui :  Controle_CheckedListBox.zip

Porque há um só Deus, e um só Mediador entre Deus e os homens, Jesus Cristo homem.
1 Timóteo 2:5

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti