2012-01-28 37 views
6

Tôi đọc trong Windows Experience Guidelines: Error Messages rằng "OK" là nút không chính xác để hiển thị trên hộp thoại báo lỗi.Hộp thoại hiển thị lỗi (MessageBox) chỉ với các nút "Đóng" hoặc "Hủy"?

... cung cấp nút Đóng. Không sử dụng OK cho các thông báo lỗi, bởi vì từ ngữ này ngụ ý rằng các vấn đề là OK.

Vậy làm cách nào để hiển thị hộp thoại báo lỗi đơn giản với một nút Đóng/Hủy?

Điều này có thể thực hiện với lớp tiêu chuẩn MessageBox hoặc tôi phải sử dụng hộp thoại tùy chỉnh (hoặc thư viện) hoặc tin nhắn Win32 khác/p-gọi "hack"?

(Có vẻ như không được bất cứ điều gì có liên quan trong MessageBoxButtons liệt kê.)

Cảm ơn.

+0

Nếu không có gì trong 'MessageBoxButtons' enum, điều này có thể là do bạn không thực sự cần bất cứ điều gì khác. Tôi hiểu rõ điểm của bạn về một nút [OK], nhưng tất cả phụ thuộc vào vấn đề bạn gặp phải. Những gì người khác bạn muốn người dùng để anwer? Anh ấy không đồng ý và muốn làm gì đó về lỗi này? Tôi không nghĩ vậy. Theo quan điểm của tôi, tôi chỉ đơn giản là sử dụng tiêu chuẩn 'MessageBox', nếu không bạn sẽ phải thực hiện của riêng bạn, mà không nên quá khó khăn. –

+0

@WillMarcouiller Nhưng một * không * cần cái gì khác, theo * chính thức * tài liệu thiết kế của Microsoft liên kết :-) Tôi tin rằng nó được nhắm mục tiêu đến Vista/Windows7, nhưng câu hỏi vẫn đứng như MessageBox (và bên dưới [MessageBox WinAPI] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx)) không cung cấp tùy chọn này: điều này có nghĩa là chúng không được "cập nhật cho lần ". (Và không có gì để làm với "bạn không thực sự cần bất cứ điều gì khác".) –

Trả lời

7

Bạn muốn cải thiện tất cả TaskDialog.

Available from here với description on usage here

TaskDialog phép bạn chỉ định một cách chi tiết hơn các nút và các biểu tượng mà hiển thị và là giải pháp riêng của microsoft cho vấn đề của bạn trong Net.

- cập nhật để trả lời @ bình luận pst của

Nếu bạn phải hỗ trợ Winows XP hoặc sớm hơn thì có một very stable and reliable library on codeproject mà kết thúc tốt đẹp và mô phỏng lớp taskdialog microsoft khi bạn đang sử dụng một phiên bản trước của cửa sổ, và cách sử dụng Phiên bản của MS nếu bạn đang sử dụng Vista hoặc mới hơn.

Tôi đã dựa vào thư viện codeproject này khoảng 2 năm trước, và nó đã ổn định sau đó, vì vậy không nên có vấn đề về độ tin cậy nào cả.

+0

Nice find. Tôi tự hỏi điều gì sẽ xảy ra nếu chạy trên Windows XP? (Có vẻ như nó sử dụng API chỉ dành cho Vista/Windows7.) –

+0

Sau đó, nó sẽ tự động bị hủy bỏ :) –

+0

Cảm ơn bạn đã nhập (và cập nhật). Tôi thậm chí không nhận ra Vista/7 đã giới thiệu một API TaskDialog mới. Bạn có biết, có kinh nghiệm với, vấn đề (hoặc mối quan tâm hiệu suất) khi sử dụng các hộp thoại WPF trong một ứng dụng/máy chủ WinForms? –

Các vấn đề liên quan