2010-10-15 37 views

Trả lời

17

Ví dụ (chút thay đổi) từ the docs:

const string message = 
    "Are you sure that you would like to close the form?"; 
const string caption = "Form Closing"; 
var result = MessageBox.Show(message, caption, 
          MessageBoxButtons.YesNo, 
          MessageBoxIcon.Question); 

// If the no button was pressed ... 
if (result == DialogResult.No) 
{ 
    //Do something for No 
} 
else if (result == DialogResult.Yes) 
{ 
    //Do something else for Yes 
} 

Phụ Lục: Trong trường hợp bạn vẫn còn trên .NET 2.0 và không có quyền truy cập vào các từ khóa var, kê khai result dưới dạng DialogResult. Ví dụ:

DialogResult result = MessageBox.Show(...); 

nhỡ thực tế rằng đây đã được gắn thẻ với WPF, vì vậy nếu bạn đang sử dụng mà sau đó bạn muốn được sử dụng một chút (nhưng không quá nhiều) khác nhau System.Windows.MessageBox lớp thay vì hệ thống. Windows.Forms.Messagebox. Tương tác này phần lớn là giống nhau, nhưng cũng sử dụng hàm en2 MessageBoxResult thay vì DialogResult, số MessageBoxImage enum thay vì MessageBoxIcon và MessageBoxButton enum thay vì MessageBoxButtons (số nhiều). Bạn sẽ có thể làm điều gì đó như thế này:

const string message = 
     "Are you sure that you would like to close the form?"; 
const string caption = "Form Closing"; 
MessageBoxResult result = MessageBox.Show(message, caption, 
           MessageBoxButton.YesNo, 
           MessageBoxImage.Question); 

if (result == MessageBoxResult.No) 
{ 
    // Do something for No 
} 
else if (result == MessageBoxResult.Yes) 
{ 
    // Do something else for Yes 
} 
+0

DialogResult là không chính xác từ một lập trường WPF, xem câu trả lời của tôi ... –

0

Dưới đây là một ví dụ:

DialogResult userSelection = MessageBox.Show("Some question","Question",MessageBoxButtons.YesNo,MessageBoxIcon.Question); 

// Do something with userSelection 
1
DialogResult result = MessageBox.Show("Some Text", "Title", MessageBoxButtons.YesNoCancel); 

if(result == DialogResult.Yes) 
{ 
    // do something 
} 
4

Kể từ khi thẻ khẳng định WPF và KHÔNG WinForms, bạn sẽ cần phải làm một cái gì đó như này cho một MessageBox:

MessageBoxResult result = MessageBox.Show("Foo Bar?", "Confirmation", MessageBoxButton.YesNoCancel); 
if (result == MessageBoxResult.Yes) 
{ 
    // yeah yeah yeah stuff 
} 
else if (result == MessageBoxResult.No) 
{ 
    // no no no stuff 
} 
else 
{ 
    // forget about it 
} 

Ngoài ra hộp thoại được xử lý ith khác trong WPF, lưu ý sự vắng mặt của DialogResult:

SomeDialog dialog = new SomeDialog(); 
dialog.ShowDialog(); 

if (dialog.DialogResult.HasValue && dialog.DialogResult.Value) 
    MessageBox.Show("Clicked ok"); 
else 
    MessageBox.Show("Clicked cancel"); 
0

childwindow trong WPF là hành động không đồng bộ. Bạn phải xử lý sự kiện Close và bên trong sự kiện đóng của bạn thì bạn có thể thực hiện logic của mình.

2

Điều tốt nhất đối với tôi là

if (MessageBox.Show("Are you sure you want to close the window ?", "Question", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No) 
     { 
      //do NO stuff 
     } 
     else 
     { 
      //do YES stuff 
     } 
Các vấn đề liên quan