2012-01-28 9 views
6

Przeczytałem w Windows Experience Guidelines: Error Messages, że "OK" jest niepoprawnym przyciskiem do wyświetlenia w oknie dialogowym błędu.Wyświetl okno dialogowe błędu (MessageBox) za pomocą tylko przycisków "Zamknij" lub "Anuluj"?

... zapewnić przycisk Zamknij. Nie należy używać OK w przypadku komunikatów o błędach, ponieważ to sformułowanie sugeruje, że problemy są w porządku.

Jak mogę wyświetlić proste okno dialogowe z pojedynczym przyciskiem myszy Zamknij/Anuluj?

Czy jest to możliwe ze standardową klasą MessageBox lub czy muszę odwoływać się do niestandardowego okna dialogowego (lub biblioteki) lub innego "hackowania" komunikatów Win32/p-invoke?

(Nie, nie wydaje się być cokolwiek istotne w MessageBoxButtons wyliczenie).

Dzięki.

+0

Jeśli w wyliczeniu "MessageBoxButtons" nie ma niczego, może to być spowodowane tym, że nie potrzebujesz niczego innego. Wyraźnie rozumiem Twój punkt widzenia na temat przycisku [OK], ale wszystko zależy od napotkanego problemu. Co jeszcze chcesz, żeby użytkownik odpowiedział? Nie zgadza się i chce coś zrobić z tym błędem? Nie sądzę. Z mojego punktu widzenia po prostu użyłbym standardowego "MessageBox", w przeciwnym razie będziesz musiał zaimplementować swój własny, co nie powinno być zbyt trudne. –

+0

@WillMarcouiller Ale jeden * robi * potrzebuje czegoś innego, zgodnie z * oficjalną * dokumentacją projektową Microsoft związaną z linkami :-) Wierzę, że jest ukierunkowana na Vista/Windows7, ale pytanie nadal jest jak MessageBox (i leżący u podstaw [MessageBox WinAPI] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx)) nie zapewnia tej opcji: oznacza to po prostu, że nie zostały "zaktualizowane dla czasy". (I nie ma nic wspólnego z "naprawdę nie potrzebujesz niczego innego".) –

Odpowiedz

7

Potrzebujesz wszechstronnej wersji TaskDialog.

Available from here z description on usage here

TaskDialog pozwala określić bardziej szczegółowo przyciski i ikony, które pokazują i jest Microsoft własne rozwiązanie do Twojego problemu w .NET.

- aktualizacja odpowiedzieć @ PST w komentarzu

Jeśli trzeba wspierać Winows XP lub wcześniej to nie jest very stable and reliable library on codeproject który otula i emuluje Microsoft klasę taskdialog gdy używasz starszej wersji systemu Windows i wykorzystuje Wersja własna MS, jeśli korzystasz z systemu Vista lub nowszego.

Opierałem się na tej bibliotece codeproject około 2 lata temu, i było wtedy stabilne, więc nie powinno być żadnych problemów z niezawodnością.

+0

Ładne znalezisko. Zastanawiam się, co by się stało, gdyby działał w systemie Windows XP? (To sprawia, że ​​brzmi tak, jakby używał interfejsu API Vista/Windows7.) –

+0

Następnie zostanie automatycznie anulowany :) –

+0

Dziękujemy za dane wejściowe (i aktualizację). Nie wiedziałem nawet, że Vista/7 wprowadził nowy interfejs API TaskDialog. Czy wiesz o doświadczeniach związanych z problemami (lub problemami z wydajnością) podczas korzystania z tych okien dialogowych WPF w aplikacji/hosta WinForm? –

Powiązane problemy