Обновлять текст метки при включенном радио - PullRequest
0 голосов
/ 12 марта 2012

У меня 3 разных радио кнопки и одна метка. Как обновить текст на этом ярлыке при включенном радио?

    private void Button_Click(object sender, EventArgs e)
    {
        foreach (Control item in groupBox1.Controls)
        {
            if(item.GetType() == typeof(RadioButton))
            {
                if (((RadioButton)item).Checked)
                {
                    label1.text = obj[item.TabIndex-1].name;
                }

            }

        }
    }

Я написал что-то подобное, но это связано с кнопкой, но я не хочу, чтобы это работало так. Я бы хотел, чтобы событие было связано со всеми тремя переключателями, но я не знаю, как это сделать.

Ответы [ 4 ]

4 голосов
/ 12 марта 2012

Вы должны посмотреть, чтобы добавить событие для каждой радиокнопки.В частности, посмотрите на событие CheckedChanged.

protected void ARadioButton_CheckedChanged(object sender, EventArgs e)
{
    if (sender is RadioButton)
    {
       RadioButton radioButton = (RadioButton)sender;
       if (radioButton.Checked)
       {
           label.Text = ARadioButton.Text;
       }
}

Или, как уже упоминалось, Одед использует то же событие и использует параметр sender.Все они будут указывать на одно и то же событие.

//somewhere in your form object, probably InitializeComponent()
ARadioButton1.CheckChanged += new EventHandler(ARadioButton_CheckedChanged);
ARadioButton2.CheckChanged += new EventHandler(ARadioButton_CheckedChanged);
ARadioButton3.CheckChanged += new EventHandler(ARadioButton_CheckedChanged);

protected void ARadioButton_CheckedChanged(object sender, EventArgs e)
{
    if (sender is RadioButton)
    {
        RadioButton radioButton = (RadioButton)sender;
        if (radioButton.Checked)
        {
            label1.Text = "Clicked " + radioButton.Name;
        }
    }
}
0 голосов
/ 12 марта 2012

Сначала необходимо определить метод, который будет обрабатывать событие. Он может быть точно таким же, как ваш Button_Click метод, описанный выше, но вы должны изменить имя, например на radioButton_CheckedChanged.

Далее вам необходимо подключить этот метод к событию, которое вызывается переключателями при изменении статуса их выбора. Это должно быть сделано в конструкторе формы после вызова InitializeComponent():

   radioButton1.CheckedChanged += new System.EventHandler (radioButton_CheckedChanged);
   radioButton2.CheckedChanged += new System.EventHandler (radioButton_CheckedChanged);
   radioButton3.CheckedChanged += new System.EventHandler (radioButton_CheckedChanged);

Замените radioButton1 и т. Д. Названием вашего радиоуправления.

0 голосов
/ 12 марта 2012

Попробуйте это:

private void radioButton_CheckedChanged(object sender, EventArgs e)
    {
        var element = sender as RadioButton;
        Debug.Assert(element != null, "element != null");
        if (element.Checked)
        {
            label1.Text = element.Name;
        }
    }
0 голосов
/ 12 марта 2012
btn1.Click += Button_Click;
btn2.Click += Button_Click;
btn3.Click += Button_Click;

однако это не очень хороший подход, но мой ответ основан на вашем комментарии к вопросу: «Я хотел бы связать событие со всеми 3 переключателями, но я не знаю, как это сделать».

...