views:

436

answers:

2

Is there any way to cancel a RadioButton or CheckBox's change in state before it changes?

I was hoping for a simple event like CheckedChanging or BeforeCheckedChange.

I really want to avoid listening for mouse clicks and key presses. But if you know of a proven reliable way of using mouse clicks and key presses, please explain it.

I'm using .NET 2.0 with standard Winforms controls.

+4  A: 

Set AutoCheck to false.

Override OnClick to manual check the checkbox

PoweRoy
I never even knew AutoCheck existed. This is exactly what I want, thanks.
Kevin Thiart
A: 

Code demo's AutoCheck, adds a confirmation prompt to Click event.

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;
        }
    }
}
Corey Trager