从另一个单选按钮的“CheckedChanged”事件中取消选择其他单选按钮

本文关键字:单选按钮 取消 选择 事件 其他 CheckedChanged 另一个 | 更新日期: 2023-09-27 18:33:46

我基本上想实现RadioButtonList的功能,而不使用该控件(即保持单选按钮分开(。 因此,我将两个常规的单选按钮(不是列表(控件拖到页面中。 两个单选按钮都设置为自动回发=true。

我尝试使用以下两个事件处理程序:

protected void radio1_CheckedChanged(object sender, EventArgs e)
{
    radio2.Checked = false;
}
protected void radio2_CheckedChanged(object sender, EventArgs e)
{
    radio1.Checked = false;
}

所以我期望的是,如果用户点击了 radio1,radio2 应该取消选中。 这不会发生。 没有错误或任何东西。 我走过,发现确实在选择其中一个单选按钮时,事件确实会触发。 它改变了.已将另一个单选按钮的状态已检查为假。 但是,在页面上的视觉上,两个单选按钮仍处于选中状态。 (我知道这似乎是一个回发问题,但事实并非如此(。


我无法使用 RadioButtonList 控件的原因是,给定页面上的其他选项,我需要禁用某些单选按钮选项。 例如,在下拉列表中选择项 A 会禁用 radio1,因此它甚至不是一个选择,但再次选择项目 B 会重新启用 radio1,并禁用 radio2。

从另一个单选按钮的“CheckedChanged”事件中取消选择其他单选按钮

您不需要服务器端事件来实现此目的。使用单选按钮的组名属性,并将所有单选按钮保留在同一组名下喜欢-

<asp:RadioButton ID="RadioButton1"  GroupName = "a" runat="server" />
<asp:RadioButton ID="RadioButton2" GroupName = "a" runat="server" />
<asp:RadioButton ID="RadioButton3" GroupName = "a"  runat="server" />

我只是添加一个检查是否选中了另一个单选按钮并且它有效

 private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        radioButton2.Checked = false;
    }
    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton2.Checked)
        radioButton1.Checked = false;
    }