Search code examples
c#checkboxmessagebox

How to show a MessageBox with a checkbox?


I would like to create a MessageBox that has Yes/No buttons AND a checkbox.

The application is a picture resizer and it will be re-sizing a number of pictures at once; in the process it will check if the new location filename exists with the option to overwrite it.

The MessageBox will give the user the option to overwrite any new files if desired, while the checkbox will prevent having to click Yes x number of times if they want to overwrite every file.

How do I add a checkbox to a MessageBox dialog?


Solution

  • You can't add a checkbox to a MessageBox. As Tim and rsbarro suggest, you should create a custom dialog. Tim's answer will work well, and doesn't require creation of a new class. If you want to design the form in the designer though, you could try this.

    • Create a new form with the two buttons and the checkbox you'll need.
    • In the forms designer, set the DialogResult property of the Yes button to Yes, and that of the No button to No. This'll let you discover what button the user clicked.
    • Create a property on the form that reflects the state of the checkbox (optional - I don't like to reference a control on one form from another form, but if you make the checkbox public, that'll work too).
    public bool DoForAll
    {
        get { return checkBox.Checked; }
    }
    
    • On your main form, show the child form when needed. For instance:
    var options = new Options();
    var result = options.ShowDialog();
    if (result == DialogResult.Yes)
    {
        var doForAll = options.DoForAll;
    }