Обработчик событий для нескольких radioButtons C# проблема с отправителем события - PullRequest
1 голос
/ 23 января 2020

Я реализую один обработчик событий для обработки события CheckedChanged для всех радиокнопок на панели. ( Обработчик событий для groupBox с radioButtons в C#, Какая радио-кнопка в группе отмечена? )

Я ждал, что когда я переключу радио-кнопку там Это два события: одно вызывается из неконтролируемого radioButton, а другое - из проверенного.

public Form1()
{
    Panel createToolPanel()
    {
        radioButton1.CheckedChanged += toolPanel_CheckedChanged;
        radioButton2.CheckedChanged += toolPanel_CheckedChanged;
        radioButton3.CheckedChanged += toolPanel_CheckedChanged;
        // ...
    }

    void toolPanel_CheckedChanged (object sender, EventArgs e)
    {
        var rb = (RadioButton)sender;

        if (rb.Checked == false)
            return;

        switch(rb.Name)
        {
            // Do stuff
        }
    }

Но вместо этого каждый раз, когда я переключаю любую из radioButton, отправитель всегда является первым radioButton.

sender: radioButton1
sender: radioButton1

Что более важно, когда я переключаюсь со 2-го на 3-й переключатель RadioButton (или с 3-го на 2-й), событие вообще не происходит . Я не понимаю, почему это происходит ..

Я также пытался изменить добавление кода обработчика событий следующим образом:

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

Но это не помогло.

...