У меня есть 4 переключателя в Winform, и один из переключателей (radiobutton_4) срабатывает, чтобы включить текстовое поле, которое работает хорошо. но если изменить любую другую радиокнопку после проверки радиокнопки триггера, текстовое поле не изменится и отключится. введите описание изображения здесь
триггер радиокнопка
private void radioButton4_CheckedChanged(object sender, EventArgs e)
{
Radioctrlvalue = "fromvalue";
textBox1.Enabled = true;
textBox2.Enabled = true;
textBox3.Enabled = true;
}
другая радиокнопка
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
//if projectbase point radio is checked and string variable store
Radioctrlvalue = "projectpoint";
textBox1.Enabled = false;
textBox2.Enabled = false;
textBox3.Enabled = false;
}
Решение проблемы
Каждый раз, когда вы меняете состояние радиокнопок, все прикрепленные к каждой радиокнопке функции CheckedChanged выполняются, даже если состояние изменяется на false. Вы должны проверять состояние в функции и выполнять свой код только в том случае, если состояние «проверено».
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if((sender as radioButton).Checked)
{
textBox1.Enabled = false;
}
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if((sender as radioButton).Checked)
{
textBox1.Enabled = true;
}
}
Вы даже можете использовать только ОДНУ функцию, связанную со всеми радиокнопками, обрабатывающими все варианты. Например, установите значение RadioButton1.Tag в false, значение RadioButton2.Tag в true и используйте его в коде.
private void AllRadioButtons_CheckedChanged(object sender, EventArgs e)
{
if((sender as radioButton).Checked)
{
textBox1.Enabled = (bool)((sender as radioButton).Tag);
}
}
Комментариев нет:
Отправить комментарий