James Dawson
James Dawson

Reputation: 5409

Catching MessageBox result

I'm trying to get the user to confirm if they want to delete a product using a MessageBox and catching its result. This is my code:

// Confirm if the user really wants to delete the product
DialogResult result = MessageBox.Show("Do you really want to delete the product \"" + productName + "\"?", "Confirm product deletion", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result == DialogResult.OK)
{
    MessageBox.Show("deleted");
}

When I run the code and try to delete a product, deleted never shows. On the MSDN page it says to use MessageBoxResult rather than DialogResult but Visual Studio doesn't recognise MessageBoxResult, and I use DialogResult elsewhere in my code for an open file dialog. Obviously, that's not the proper way to check it.

Upvotes: 2

Views: 8119

Answers (4)

Agustin Meriles
Agustin Meriles

Reputation: 4854

You must ask for DialogResult.Yes

// Confirm if the user really wants to delete the product
DialogResult result = MessageBox.Show("Do you really want to delete the product \"" +     productName + "\"?", "Confirm product deletion", MessageBoxButtons.YesNo,  MessageBoxIcon.Warning);
if (result == DialogResult.Yes)
{
    MessageBox.Show("deleted");
} 

Upvotes: 6

Mario Fraiß
Mario Fraiß

Reputation: 1095

Just ask for the right DialogResult.

if (result == DialogResult.Yes)

Bear in mind, that a dialog can have different kind of results, and that you are also able to write your own results. Therefore: Have always a look on the result you are expecting and on the result you are checking.

Greetings,

Upvotes: 0

YoryeNathan
YoryeNathan

Reputation: 14502

You are using the YesNo buttons, so the DialogResult.OK has nothing to do with it. You should do

if (result == DialogResult.Yes)

for your condition.

Upvotes: 0

TomP89
TomP89

Reputation: 1460

You have the message box type set to yes/no, yet you are trying to catch an OK result. Catch the yes and you will be sorted.

Upvotes: 1

Related Questions