How to cancel RadioButton or CheckBox checked change

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.

Answers


Set AutoCheck to false.

Override OnClick to manual check the checkbox


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

I used this to cancel a radio button check.

 private void radioButton1_MouseClick(object sender, MouseEventArgs e)
    {
        RadioButton r = (RadioButton)sender;
        r.Checked = !(r.Checked);
    }

Need Your Help

Why is there no support for concatenating std::string and std::string_view?

c++ string c++17 string-view

Since C++1z, we have std::string_view, a light-weight view into a contiguous sequence of characters that avoids unnecessary copying of data. Instead of having a const std::string& parameter, it...

What is the best practice for using public fields?

c# .net properties field

When I write a class I always expose private fields through a public property like this: