0

我有一个简单的 Windows 窗体应用程序,我必须迁移它才能在网页上运行,所以我正在尝试使用 aspx(c#)。

我有两个单选按钮,但有时只应检查其中一个。我从原始应用程序中实现了完全相同的代码,但它不起作用:

protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (RadioButton1.Checked == true)
        {
            RadioButton2.Checked = false;
        }
    }
protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
    {
        if (RadioButton2.Checked == true)
        {
            RadioButton1.Checked = false;
        }
    }

那么为什么这些更改没有应用到页面上呢?

4

3 回答 3

1

您可以使用控制GroupName属性RadioButton

如果您GroupName为 set设置相同,RadioButtons则无需编写您在上述帖子/问题中编写的 Code Behid,因为只能从组中选择一个单选按钮。

但是,如果您想调用某些操作,例如TextBox在特定单选按钮单击事件上禁用,您可以使用以下示例代码。

示例:在此示例中,我将 3 个单选按钮全部设置为 Same GroupName,因此一次只能RadioButton选择一个。

当用户选择/检查 RadioButton1 时,我正在禁用 TextBox1。

注意:请确保您的RadioButton AutoPostBack属性设置为True否则事件RadioButton不会被触发。

设计规范:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:RadioButton ID="RadioButton1" runat="server" Text="DisableTextBox" GroupName="Group1" AutoPostBack="True" OnCheckedChanged="RadioButton1_CheckedChanged"/>
    <asp:RadioButton ID="RadioButton2" runat="server"  GroupName="Group1" AutoPostBack="True"/>
    <asp:RadioButton ID="RadioButton3" runat="server"  GroupName="Group1" AutoPostBack="True" />

代码背后:

protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
                TextBox3.Enabled = false;
            else
                TextBox3.Enabled = true;
        }
于 2013-11-10T18:33:16.540 回答
0

您可以将两个单选按钮的GroupName设置为相同,因此不再需要您编写的代码。

另外,查看RadioButtonList

更新

您的 aspx 代码应如下所示:

<asp:RadioButton id="RadioButtonEnabled" runat="server" Text="Enabled" GroupName="GroupTxtEnabled" AutoPostBack="True" OnCheckedChanged="RadioButtonEnabled_CheckedChanged"/>
<asp:RadioButton id="RadioButtonDisabled" runat="server" Text="Disabled"  GroupName="GroupTxtEnabled" AutoPostBack="True"/>

<asp:TextBox id="TextBox1" runat="server"/>

在您的代码隐藏中:

protected void RadioButtonEnabled_CheckedChanged (object sender, EventArgs e)
{
    TextBox1 = RadioButtonEnabled.Checked
}

如您所见,我OnCheckedChanged只使用了一个单选按钮,因为两个单选按钮同时更改(属性GroupName相等)。

于 2013-11-10T16:31:48.293 回答
0

将复选框放在 GroubBox 或 Panel 中

于 2013-11-10T16:45:45.253 回答