Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to cancel winform button click event?

I have a custom button class inherited from System.Windows.Forms.Button.

I want to use this button in my winform project.

This class is called "ConfirmButton", and it shows confirm message with Yes or No.

But the problem is that I do not know how to stop click event when user selected No with confirm message.

Here is my class source.

using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace ConfirmControlTest
{
    public partial class ConfirmButton : System.Windows.Forms.Button
    {
        public Button()
        {
            InitializeComponent();

            this.Click  += Button_Click;
        }

        void Button_Click(object sender, EventArgs e)
        {
            DialogResult res    = MessageBox.Show("Would you like to run the command?"
                , "Confirm"
                , MessageBoxButtons.YesNo
                );
            if (res == System.Windows.Forms.DialogResult.No)
            {
                // I have to cancel button click event here

            }
        }
    }
}

If user select No from confirm message, then the button click event should not fire anymore.

like image 349
Joshua Son Avatar asked Jul 22 '14 23:07

Joshua Son


1 Answers

You need to override the click event.

class ConfirmButton:Button
    {
    public ConfirmButton()
    {

    }

    protected override void OnClick(EventArgs e)
    {
        DialogResult res = MessageBox.Show("Would you like to run the command?", "Confirm", MessageBoxButtons.YesNo
            );
        if (res == System.Windows.Forms.DialogResult.No)
        {
            return;
        }
        base.OnClick(e);
    }
}
like image 69
Naresh Avatar answered Nov 15 '22 09:11

Naresh