通过C#中的单选按钮启用和禁用文本框

时间:2014-05-10 10:06:44

标签: c# .net winforms if-statement

我有这个表格“Emp_Employee” 我有4个radiobuttons:radio_ID,radio_ ... 和4个文本框:id,name,salary,desgination 当我加载我的表单时,所有的文本框最初被禁用(这很好)但是当我检查任何单选按钮以启用它的相对文本框时它就会发生..所有文本框保持禁用直到结束无论检查哪个radiobox! 请帮助..

private void Emp_Employee_Load(object sender, EventArgs e)
{
    id.Enabled = false;
    name.Enabled = false;
    salary.Enabled = false;
    designation.Enabled = false;

    if (radio_ID.Checked == true)
    {
        id.Enabled = true;
        name.Enabled = false;
        salary.Enabled = false;
        designation.Enabled = false;
    }
    else if (radio_Name.Checked == true)
    {
        name.Enabled = true;
        id.Enabled = false;
        salary.Enabled = false;
        designation.Enabled = false;
    }
    else if (radio_Salary.Checked == true)
    {
        salary.Enabled = true;
        id.Enabled = false;
        name.Enabled = false;
        designation.Enabled = false;
    }
    else if (radio_Designation.Checked == true)
    {
        designation.Enabled = true;
        id.Enabled = false;
        name.Enabled = false;
        salary.Enabled = false;
    }
}

6 个答案:

答案 0 :(得分:2)

将所有radiobuttons订阅到同一个CheckedChanged事件处理程序,然后将radiobutton的Checked状态分配给Enabled个文本框状态:

private void radioButton_CheckedChanged(object sender, EventArgs e)
{
    id.Enabled = radio_ID.Checked;
    name.Enabled = radio_Name.Checked;
    salary.Enabled = radio_Salary.Checked;
    designation.Enabled = radio_Designation.Checked;
}

另一个很酷的选择是使用数据绑定。您可以在表单加载上简单地绑定这两个属性:

private void Emp_Employee_Load(object sender, EventArgs e)
{
    id.DataBindings.Add("Enabled", radio_ID, "Checked");
    name.DataBindings.Add("Enabled", radio_Name, "Checked");
    salary.DataBindings.Add("Enabled", radio_Salary, "Checked");
    designation.DataBindings.Add("Enabled", radio_Designation, "Checked");
}

因此,您甚至不需要处理radiobutton的CheckedChanged事件 - 文本框将自动反映无线电按钮的状态。

答案 1 :(得分:1)

Page_Load event wont trigger the desired results.

您需要添加其他事件才能启用文本框数据。 例如:

private void radioButton1_CheckedChanged(Object sender, 
                                         EventArgs e)
{
      salary.Enabled = true;
      id.Enabled = false;
      name.Enabled = false;
      designation.Enabled = false;
}

参考this link.

希望这有帮助

答案 2 :(得分:0)

尝试启用和禁用单选按钮中的文本框已选中已更改的事件

RadioButton rb = new RadioButton();
rb.CheckedChanged += new EventHandler(rb_CheckedChanged);


void rb_CheckedChanged(object sender, EventArgs e)
    {
        //you do your text box enabling and disableing operation here
    }

答案 3 :(得分:0)

我假设您使用的是WinForms,而不是Wpf

您的整个代码都驻留在Form.Load事件中,每个Form加载只执行一次。您需要将更新代码移动到检查每个RadioButton时执行的代码。通常是RadioButton.CheckedChanged事件。

答案 4 :(得分:-1)

如果您使用xaml,则无需编写C#

试试这个

    <RadioButton x:Name="radioButton0" GroupName="RadioButtonGroup1"/>
    <RadioButton x:Name="radioButton1" GroupName="RadioButtonGroup1"/>
    <RadioButton x:Name="radioButton2" GroupName="RadioButtonGroup1"/>
    <RadioButton x:Name="radioButton3" GroupName="RadioButtonGroup1"/>
    <TextBox x:Name="textBox0" IsEnabled="{Binding IsChecked, ElementName=radioButton0}"/>
    <TextBox x:Name="textBox1" IsEnabled="{Binding IsChecked, ElementName=radioButton1}"/>
    <TextBox x:Name="textBox2" IsEnabled="{Binding IsChecked, ElementName=radioButton2}"/>
    <TextBox x:Name="textBox3" IsEnabled="{Binding IsChecked, ElementName=radioButton3}"/>

答案 5 :(得分:-2)

我认为您可以更改可见性:

textBox1.Visibility = Visibility.Visible;

我希望它有效,它是从我的脑海里写的。