Làm cách nào để tôi tạo một hộp thông báo với các lựa chọn của Yes Yes, Các sản phẩm của No No và DialogResult?


345

Tôi muốn làm MessageBox đơn giản Có / Không được chọn, nhưng tôi nghĩ thật vô nghĩa khi thiết kế một biểu mẫu cho điều đó. Tôi nghĩ rằng tôi có thể sử dụng MessageBox, thêm các nút, vv để thực hiện điều này. Rất đơn giản, nhưng vì không có DialogResult được trả về, làm cách nào để lấy kết quả?

Câu trả lời:


790

Điều này nên làm điều đó:

DialogResult dialogResult = MessageBox.Show("Sure", "Some Title", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

6
Câu trả lời là dành cho Windows, không phải Windows Phone mà tôi không biết nhiều về :)
Mikael Svenson

22
'DialogResult' không hoạt động trong wpf. Bạn phải sử dụng 'MessageBoxResult'.
matolof

56
DialogResult dr = MessageBox.Show("Are you happy now?", 
                      "Mood Test", MessageBoxButtons.YesNo);
switch(dr)
{
   case DialogResult.Yes:
      break;
   case DialogResult.No:
      break;
}

Lớp MessageBox là những gì bạn đang tìm kiếm.


32
MessageBox.Show(title, text, messageboxbuttons.yes/no)

Điều này trả về một DialogResult mà bạn có thể kiểm tra.

Ví dụ,

if(MessageBox.Show("","",MessageBoxButtons.YesNo) == DialogResult.Yes)
{
   //do something
}


12

Sử dụng:

MessageBoxResult m = MessageBox.Show("The file will be saved here.", "File Save", MessageBoxButton.OKCancel);
if(m == m.Yes)
{
    // Do something
}
else if (m == m.No)
{
    // Do something else
}

MessageBoxResult được sử dụng trên Windows Phone thay vì DialogResult ...


6

Bạn cũng có thể sử dụng biến thể này với các chuỗi văn bản, đây là mã được thay đổi hoàn toàn (Mã từ Mikael), được thử nghiệm trong C # 2012:

// Variable
string MessageBoxTitle = "Some Title";
string MessageBoxContent = "Sure";

DialogResult dialogResult = MessageBox.Show(MessageBoxContent, MessageBoxTitle, MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    //do something
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

Bạn có thể sau

.YesNo

chèn một biểu tượng tin nhắn

, MessageBoxIcon.Question

5

Câu trả lời của @Mikael Svenson là chính xác. Tôi chỉ muốn thêm một bổ sung nhỏ cho nó:

Biểu tượng Hộp thư cũng có thể được bao gồm có một thuộc tính bổ sung như dưới đây:

DialogResult dialogResult = MessageBox.Show("Sure", "Please Confirm Your Action", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

2
if (MessageBox.Show("Please confirm before proceed" + "\n" + "Do you want to Continue ?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{
//do something if YES
}

else

{
//do something if NO
}

Nó sẽ nhắc một hộp thông báo như thế này.


0
dynamic MsgResult = this.ShowMessageBox("Do you want to cancel all pending changes ?", "Cancel Changes", MessageBoxOption.YesNo);

if (MsgResult == System.Windows.MessageBoxResult.Yes)
{
    enter code here
}
else 
{
    enter code here
}

Kiểm tra chi tiết hơn từ đây


0

Mã đơn giản này làm việc cho tôi. Tôi đã lấy nó từ MSDN ở đây:

https://social.msdn.microsoft.com/Forums/en-US/d1092a96-96b0-4ca4-b716-0c8e55e42ee9/how-can-i-manage-messagebox-result-?forum=Vse े vcs

if (System.Windows.Forms.MessageBox.Show
            ("Are you sure you want to add the audit?", "Add",
            System.Windows.Forms.MessageBoxButtons.YesNo, 
            System.Windows.Forms.MessageBoxIcon.Question)
            ==System.Windows.Forms.DialogResult.Yes)                
        // Do stuff after 'YES is clicked'
        else
        // DO stuff after 'NO is clicked'

0

Thử cái này:

if (MessageBox.Show("Are you sure", "Title_here", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    Do something here for 'Yes'...
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.