2010-06-14 35 views
282

Tôi muốn thực hiện đơn giản Yes/No MessageBox choiced, nhưng tôi nghĩ rằng đó là vô nghĩa để thiết kế một hình thức 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. Nó là đơn giản, nhưng vì không có DialogResult trả về, làm thế nào để lấy kết quả?Làm cách nào để tạo hộp thư có các lựa chọn "Có", "Không" và DialogResult?

Trả lời

632

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 
} 
+1

Này đã được gỡ bỏ từ API? Nó không thể nữa (WP SDK 7.1) ... –

+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ề :) –

+1

Ah, do đó, nó không có sẵn tôi đoán ... Mặc dù có một MessageBoxResult.Yes ... –

15

Các MessageBox không sản xuất một DialogResults

DialogResult r = MessageBox.Show("Some question here"); 

Bạn cũng có thể chỉ định các nút dễ dàng đủ. Nhiều tài liệu có thể được tìm thấy tại http://msdn.microsoft.com/en-us/library/ba2a6d06.aspx

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

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

24
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 
} 
6

Bạn cũng có thể sử dụng phiên bản này với chuỗi văn bản, đây là hoàn toàn thay đổi mã (Mã số từ Mikael), 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 
10

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 ... chi tiết

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 nhiều hơn từ here

0

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

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

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' 
5

@Mikael Svenson là đúng. Tôi chỉ muốn thêm một bổ sung nhỏ với nó:

Biểu tượng MessageBox cũng có thể được bao gồm có một đặc tính bổ sung như sau:

DialogResult dialogResult = MessageBox.Show("Sure", "Please Confirm Your Action", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
Các vấn đề liên quan