我有这个表格“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;
}
}
答案 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;
}
希望这有帮助
答案 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;
我希望它有效,它是从我的脑海里写的。