2009-10-09 127 views
1

當我打開一個帶有選項的消息框是的時,右上角的(通常)取消交叉顯示,但沒有效果。是沒有消息框沒有關閉,當點擊x按鈕

System.Windows.MessageBox.Show("Really, really?", "Are you sure?", MessageBoxButton.YesNo); 

如果我提供YesNoCancel作爲選項,單擊十字會​​使用DialogResult取消關閉對話框。

System.Windows.MessageBox.Show("Really, really?", "Are you sure?", MessageBoxButton.YesNoCancel); 

我本來料想的是,如果不是隱藏的,當點擊它時沒有任何效果,這個十字架是「禁用的」。 也許我不是第一個觀察這個。 你最喜歡的方式來隱藏/禁用此按鈕或解決問題?

注意:我寧願不使用System.Windows.Forms的解決方案,因爲我正在處理WPF項目,並且希望儘可能避免任何InterOp。

回答

7

關閉按鈕(在MsgBox的標題欄中):由於MsgBox窗口是操作系統的內置功能,因此只有在某些按鈕存在時才啓用其X按鈕。如果只有一個OK按鈕,單擊X按鈕與按OK按鈕相同。否則,X按鈕被禁用,除非有一個取消按鈕,在這種情況下,點擊X與按下取消相同。

http://www.autohotkey.com/docs/commands/MsgBox.htm

它的默認行爲!從MsgBox到MessageBox的時間!

+0

謝謝你的解釋,至少現在我知道,當X有效果,當它沒有。現在我仍然需要通過隱藏X或者以這種方式設計它來處理它,當用戶點擊它幾次而沒有任何響應時,用戶不會感到困惑。 – 2010-03-30 17:51:25

+0

標記爲答案,因爲它至少回答爲什麼這樣,即使沒有好的解決方案提供瞭如何更改它。 – 2011-02-16 16:45:27

+0

@Simon D:歡迎你! – ioWint 2011-04-05 03:55:33

2

看看這個CodeProject article,它概述了旋轉自己的MessageBox類。有關於禁用關閉按鈕的部分。

+0

謝謝你,有趣的文章。其實,我希望有一個解決方案,我不需要替換整個MessageBox。這篇文章似乎涉及到System.Windows.Forms.MessageBox - 我試圖避免在純WPF項目中(我將這個添加到問題中)。不過,如果我找不到其他方式,我會考慮使用此MessageBoxExtension或將其某些功能轉移到某些非WinForms MessageBox擴展。 – 2009-10-10 07:37:08

+0

多年來,一個非常常見的要求是能夠自定義系統MessageBox - 無論是刪除/禁用關閉按鈕還是自定義按鈕。不幸的是,微軟並沒有看到讓開發人員能夠更好地控制看起來相當簡單的api。 – 2009-10-10 14:25:06

0

當您在資源管理器中刪除文件時(當在回收站屬性中選中刪除確認時),會出現一個消息框並詢問「您確定要將這些x項目移動到回收站?標題爲「刪除確認」,X在右上角。逃生也行得通。可用按鈕僅爲「是」和「否」。我們怎樣才能做到這一點?

要麼微軟沒有遵循他們的指導原則,也沒有向開發者提供這些指導。

相關問題