none
TableLayoutPanel Controles RRS feed

  • Pergunta

  • Olá pessoal,

    Eu tenho uma TableLayoutPanel que eu coloco RadioButton em tempo de execução.

    O problema é como saber qual o radiobutton que eu selecionei?

    Aguardo.
    sexta-feira, 19 de junho de 2009 16:08

Respostas

  • Bom dia Barcelo,

    Existem diversas formas de fazer isto, neste caso você pode percorrer a coleção da seguinte forma:

                foreach (RadioButton RB_X in tableLayoutPanel1.Controls)
                {
                    if (RB_X.Checked == true)
                    {
                        MessageBox.Show(RB_X.Name);
                    }
                }

    []s
    Leonardo Jacques da Silva Desenvolvedor .net
    quinta-feira, 25 de junho de 2009 13:03
  • Olá Barcelo,

    Uma outra alternativa é associar um mesmo método para o evento CheckedChanged de todos os RadioButtons que pertencem a um mesmo grupo. Assim, toda vez que o estado de um deles mudar, você será notificado através do evento, descobre qual deles é que está marcado e executa uma ação (ou guarda em algum lugar para utilizar depois).

    Algo mais ou menos assim:

    private void Form1_Load(object sender, EventArgs e)
    {
        // Instancia o primeiro RadioButton
        RadioButton radioButtonMasculino = new RadioButton();
        radioButtonMasculino.Name = "radioButtonMasculino";
        radioButtonMasculino.Text = "Masculino";
    
        // Instancia o segundo RadioButton
        RadioButton radioButtonFeminino = new RadioButton();
        radioButtonFeminino.Name = "radioButtonFeminino";
        radioButtonFeminino.Text = "Feminino";
    
        // Adiciona os RadioButtons, um em cada célula da primeira linha
        this.tableLayoutPanel.Controls.Add(radioButtonMasculino, 0, 0);
        this.tableLayoutPanel.Controls.Add(radioButtonFeminino, 1, 0);
    
        // Associa o mesmo método para o evento CheckedChanged de ambos os controles
        // assim, o mesmo método será disparado toda vez que o estado de cada um mudar
        radioButtonMasculino.CheckedChanged += new EventHandler(radioButtonSexo_CheckedChanged);
        radioButtonFeminino.CheckedChanged += new EventHandler(radioButtonSexo_CheckedChanged);
    }
    
    // Método que faz o tratamento do evento
    private void radioButtonSexo_CheckedChanged(object sender, EventArgs e)
    {
        // Obtém a referência para o RadioButton que disparou o evento
        RadioButton botaoRadio = (RadioButton)sender;
        if (botaoRadio.Checked)
        {
            // Mostra o nome do controle que gerou o evento (para ilustrar)
            MessageBox.Show("RadioButton selecionado = " + botaoRadio.Name);
        }
    }
    


    Abraços,
    Caio Proiete



    Caio Proiete Siga-me no Twitter!
    http://www.caioproiete.com
    quarta-feira, 1 de julho de 2009 00:12
    Moderador

Todas as Respostas

  • Bom dia Barcelo,

    Existem diversas formas de fazer isto, neste caso você pode percorrer a coleção da seguinte forma:

                foreach (RadioButton RB_X in tableLayoutPanel1.Controls)
                {
                    if (RB_X.Checked == true)
                    {
                        MessageBox.Show(RB_X.Name);
                    }
                }

    []s
    Leonardo Jacques da Silva Desenvolvedor .net
    quinta-feira, 25 de junho de 2009 13:03
  • Olá Barcelo,

    Uma outra alternativa é associar um mesmo método para o evento CheckedChanged de todos os RadioButtons que pertencem a um mesmo grupo. Assim, toda vez que o estado de um deles mudar, você será notificado através do evento, descobre qual deles é que está marcado e executa uma ação (ou guarda em algum lugar para utilizar depois).

    Algo mais ou menos assim:

    private void Form1_Load(object sender, EventArgs e)
    {
        // Instancia o primeiro RadioButton
        RadioButton radioButtonMasculino = new RadioButton();
        radioButtonMasculino.Name = "radioButtonMasculino";
        radioButtonMasculino.Text = "Masculino";
    
        // Instancia o segundo RadioButton
        RadioButton radioButtonFeminino = new RadioButton();
        radioButtonFeminino.Name = "radioButtonFeminino";
        radioButtonFeminino.Text = "Feminino";
    
        // Adiciona os RadioButtons, um em cada célula da primeira linha
        this.tableLayoutPanel.Controls.Add(radioButtonMasculino, 0, 0);
        this.tableLayoutPanel.Controls.Add(radioButtonFeminino, 1, 0);
    
        // Associa o mesmo método para o evento CheckedChanged de ambos os controles
        // assim, o mesmo método será disparado toda vez que o estado de cada um mudar
        radioButtonMasculino.CheckedChanged += new EventHandler(radioButtonSexo_CheckedChanged);
        radioButtonFeminino.CheckedChanged += new EventHandler(radioButtonSexo_CheckedChanged);
    }
    
    // Método que faz o tratamento do evento
    private void radioButtonSexo_CheckedChanged(object sender, EventArgs e)
    {
        // Obtém a referência para o RadioButton que disparou o evento
        RadioButton botaoRadio = (RadioButton)sender;
        if (botaoRadio.Checked)
        {
            // Mostra o nome do controle que gerou o evento (para ilustrar)
            MessageBox.Show("RadioButton selecionado = " + botaoRadio.Name);
        }
    }
    


    Abraços,
    Caio Proiete



    Caio Proiete Siga-me no Twitter!
    http://www.caioproiete.com
    quarta-feira, 1 de julho de 2009 00:12
    Moderador