【问题标题】:C# - Radio button Check Change Event not responding when checkedC# - 单选按钮检查更改事件在选中时没有响应
【发布时间】:2016-06-12 10:40:25
【问题描述】:

请给我一个从列表中动态添加的单选按钮(在数据库读取期间获得),它显示正常,但不会触发检查更改事件。

public void fillradioButton()
{
    for (int i = 0; i < officeLists.Count; i++)
    {
        RadioButton rbutton = new RadioButton()
        {
            Name = "rbutton",
            Text = candidate_surname + " " + candidate_name,
            Left = _RadiobuttonPos.X,
            Top = _RadiobuttonPos.Y,
        };

        this.Controls.Add(rbutton);
        _RadiobuttonPos.Y += 25;
    }
}

private void RadioButtonCheckedChanged(object sender, EventArgs e)
{
    MessageBox.Show("Okay I see U");                
}

如果选中任何单选按钮,我希望显示消息框。 谢谢。

【问题讨论】:

    标签: c# winforms radio-button


    【解决方案1】:

    将事件添加到您的单选按钮,例如:

     public void fillradioButton()
    {
        for (int i = 0; i < officeLists.Count; i++)
        {
            RadioButton rbutton = new RadioButton()
            {
                Name = "rbutton",
                Text = candidate_surname + " " + candidate_name,
                Left = _RadiobuttonPos.X,
                Top = _RadiobuttonPos.Y,
            };
    
            If(i == 0) rbutton.CheckedChanged += RadioButtonCheckedChanged;
    
            this.Controls.Add(rbutton);
            _RadiobuttonPos.Y += 25;
        }
    }
    

    【讨论】:

    • 另一个问题,MessageBox.Show("Okay I see U"); 在检查第二个选项和第一个选项时重复两次。无论选择什么选项,我都需要它只显示一次。谢谢。
    • 尝试在 for 循环之外添加这样的事件:this.Controls["rbutton"].CheckedChanged += RadioButtonCheckedChanged;发生了什么?
    • 其实现在用if试试吧,更干净的解决方案
    • 谢谢,现在我需要用户能够选择单选按钮一次,即在单击单选按钮后它会被禁用。
    • 这与这个问题不再相关。无论如何添加类似 rbutton.disabled = true;在显示消息框后的 CheckedChanged 事件中
    【解决方案2】:

    您需要将点击处理程序添加到单选按钮上的事件中。初始化单选按钮后,在循环内的某个时刻,执行以下操作:

    rbutton.CheckedChanged += new EventHandler(RadioButtonCheckedChanged);
    

    或者

    rbutton.CheckedChanged += RadioButtonCheckedChanged;
    

    由于您是动态创建按钮,you need to manually wire up the event handler

    【讨论】:

    • 感谢您的帮助,rbutton.CheckedChanged += RadioButtonCheckedChanged; 帮助。但是,当检查第二个选项时,消息框重复两次,并且第一个选项一次。无论选择什么选项,我都需要它只显示一次。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 2011-12-13
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2014-12-18
    • 2019-05-29
    • 2019-04-05
    相关资源
    最近更新 更多