none
Evento no listview para habilitar e desabilitar Buttun. RRS feed

  • Pergunta

  • Olá Pessoal.

    Estou querendo ao marca um checkbox que esta no listview ele habilite e desabilite alguns buttuns, mas só esta acontecendo a parti do segundo registro o primeiro ele não executa a ação.

    Coloquei o codigo abaixo no evento click do listview.

                   

    for (int i = 0; i < ls.Items.Count; i++)
             {
                 if (ls.Items[i].Checked == true & ls.Items[i].Text != "")
                 { btcienciaoperacao.Enabled = true; }
                 else { btcienciaoperacao.Enabled = false; }

             }



    segunda-feira, 8 de junho de 2015 13:00

Respostas

  • Tenta fazer o seguinte, assine o evento ItemChecked do ListView.

    public Form1()
            {
                InitializeComponent();
    
                ListView ls = new ListView();
                ls.ItemChecked +=ls_ItemChecked;
            }
    
            void ls_ItemChecked(object sender, ItemCheckedEventArgs e)
            {
                var listViewItem = e.Item;
    
                if (listViewItem.Checked == true & listViewItem.Text != "")
                { btcienciaoperacao.Enabled = true; }
                else { btcienciaoperacao.Enabled = false; }
            }
    Abraço!
    segunda-feira, 8 de junho de 2015 13:25

Todas as Respostas

  • Olá, quando você marca o primeiro item do ListView ele não executa o trecho de código?

    segunda-feira, 8 de junho de 2015 13:17
  • Isso ele não executa.

    E os demais ele só esta executando quando eu seleciono o registro todo e não somente qtd marco o checkbox.

    segunda-feira, 8 de junho de 2015 13:19
  • Tenta fazer o seguinte, assine o evento ItemChecked do ListView.

    public Form1()
            {
                InitializeComponent();
    
                ListView ls = new ListView();
                ls.ItemChecked +=ls_ItemChecked;
            }
    
            void ls_ItemChecked(object sender, ItemCheckedEventArgs e)
            {
                var listViewItem = e.Item;
    
                if (listViewItem.Checked == true & listViewItem.Text != "")
                { btcienciaoperacao.Enabled = true; }
                else { btcienciaoperacao.Enabled = false; }
            }
    Abraço!
    segunda-feira, 8 de junho de 2015 13:25
  • Como conhecimento nunca é demais, gostaria de dar duas dicas.

    1) No trecho de código abaixo, tu poderia simplificar o if.

    if (listViewItem.Checked == true && listViewItem.Text != "")

    Poderia ser reescrito da seguinte maneira.

    if (listViewItem.Checked && listViewItem.Text != "")

    Como a propriedade Checked retorna um bool, não tem a necessidade de fazer a verificação "==true" dentro do if.

    2) O trecho abaixo poderia ser alterado para uma linha.

    if (listViewItem.Checked == true && listViewItem.Text != "")
                { btcienciaoperacao.Enabled = true; }
                else { btcienciaoperacao.Enabled = false; }

    Simplificando um pouco o código

    btcienciaoperacao.Enabled = listViewItem.Checked && listViewItem.Text != "";

    Ao invés de analisar as condições e caso seja true setar o Enabled para true, tu pode fazer isso atribuindo o valor de retorno das expressões, pois ele vai retornar true se as duas expressões forem verdadeiras ou falso caso sejam falsas, o código simplificado faz exatamente a mesma coisa, só que um pouco mais legível, pelo menos para mim.

    Abraço.


    segunda-feira, 8 de junho de 2015 14:49