none
Foreach Control RRS feed

  • Pergunta

  • Pessoal, bom dia.

    Estou precisando zerar um form que contém textbox, picturebox, combobox, checkbox e radiobutton.

    Estou tentanto fazer com foreach, pois são muitos campos, quando é textbox deu certo, porém, quando eu tento fazer, por exemplo: se o controle for uma combobox, transformar em SelectedIndex = -1. Ele não acha essa propriedade.

    Segue o código

                foreach (Control ctl in Controls)
                {
                    if (ctl is TextBox)
                    {
                        ctl.Text = string.Empty;
                    }

    Aí eu tentei:

    else if (ctl is ComboBox)
    {
    ctl.SelectedIndex = -1;
    }

    Só que não rs.

    Abraços

    quinta-feira, 25 de outubro de 2012 11:59

Respostas

  • Leonardo

    tenta desta forma:

    public static void LimparCampos(Form frm)
            {
                foreach (Control item in frm.Controls)
                {
                    if (item is TextBox)
                        ((TextBox)item).Text = "";
                    else if (item is ComboBox)
                        ((ComboBox)item).SelectedIndex = -1;
                    else if (item is DateTimePicker)
                        item.Text = "";
                    else if (item is GroupBox)
                    {
                        for (int i = 0; i < item.Controls.Count; i++)
                        {
                            if (item.Controls[i] is TextBox)
                            {
                                (item.Controls[i] as TextBox).Text = "";
                            }
                            if (item.Controls[i] is ComboBox)
                            {
                                (item.Controls[i] as ComboBox).SelectedIndex = -1;
                            }
                            if (item.Controls[i] is ComboBox)
                            {
                                (item.Controls[i] as ComboBox).SelectedValue = -1;
                            }
                            if (item.Controls[i] is DateTimePicker)
                            {
                                (item.Controls[i] as DateTimePicker).Text = "";
                            }
                        }
                    }
                }
            }

    qualquer coisa você me fala.

    quinta-feira, 25 de outubro de 2012 12:07
  • Leonardo, 

    Você só precisa converter o ctl para o tipo que deseja zerar, por exemplo

    if (item is DropDownList)
                    {
                        ((DropDownList)item).SelectedIndex = -1;
                    }


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    quinta-feira, 25 de outubro de 2012 12:16

Todas as Respostas

  • Leonardo

    tenta desta forma:

    public static void LimparCampos(Form frm)
            {
                foreach (Control item in frm.Controls)
                {
                    if (item is TextBox)
                        ((TextBox)item).Text = "";
                    else if (item is ComboBox)
                        ((ComboBox)item).SelectedIndex = -1;
                    else if (item is DateTimePicker)
                        item.Text = "";
                    else if (item is GroupBox)
                    {
                        for (int i = 0; i < item.Controls.Count; i++)
                        {
                            if (item.Controls[i] is TextBox)
                            {
                                (item.Controls[i] as TextBox).Text = "";
                            }
                            if (item.Controls[i] is ComboBox)
                            {
                                (item.Controls[i] as ComboBox).SelectedIndex = -1;
                            }
                            if (item.Controls[i] is ComboBox)
                            {
                                (item.Controls[i] as ComboBox).SelectedValue = -1;
                            }
                            if (item.Controls[i] is DateTimePicker)
                            {
                                (item.Controls[i] as DateTimePicker).Text = "";
                            }
                        }
                    }
                }
            }

    qualquer coisa você me fala.

    quinta-feira, 25 de outubro de 2012 12:07
  • Leonardo, 

    Você só precisa converter o ctl para o tipo que deseja zerar, por exemplo

    if (item is DropDownList)
                    {
                        ((DropDownList)item).SelectedIndex = -1;
                    }


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    quinta-feira, 25 de outubro de 2012 12:16
  • Perfeito, meus amigos!
    quinta-feira, 25 de outubro de 2012 12:22