Ответ 1
Установите AutoCheck в значение false.
Переопределить OnClick для ручной установки флажка
Есть ли способ отменить изменение RadioButton или CheckBox в состоянии до его изменения?
Я надеялся на простое событие, например CheckedChanging или BeforeCheckedChange.
Я действительно хочу избежать прослушивания щелчков мышью и нажатия клавиш. Но если вы знаете проверенный надежный способ использования щелчков мышью и нажатия клавиш, пожалуйста, объясните это.
Я использую .NET 2.0 со стандартными элементами управления Winforms.
Установите AutoCheck в значение false.
Переопределить OnClick для ручной установки флажка
Код демо AutoCheck, добавляет запрос подтверждения на событие Click.
public partial class Form1 : Form { public Form1() { InitializeComponent(); this.checkBox1.AutoCheck = false; this.checkBox1.Click += new System.EventHandler(this.checkBox1_Click); } private void checkBox1_Click(object sender, EventArgs e) { CheckBox checkBox = (CheckBox)sender; if (!checkBox.Checked) { DialogResult dialogResult = MessageBox.Show( "Are you sure?", "my caption", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { checkBox.Checked = true; } } else { checkBox.Checked = false; } } }
Я использовал это, чтобы отменить проверку переключателя.
private void radioButton1_MouseClick(object sender, MouseEventArgs e)
{
RadioButton r = (RadioButton)sender;
r.Checked = !(r.Checked);
}