2012-11-21 29 views
2

想知道是否可以使用自定義按鈕創建一個MessageBox,類似於在java中使用showOptionDialog實現的類似按鈕?使用自定義按鈕在C#中創建消息框

String[]colors = {"Red", "Green", "Blue"}; 
int color = JOptionPane.showOptionDialog(null, "Please choose color", "Color please", 0, JOptionPane.INFORMATION_MESSAGE,null, colors, colors[0]); 
if(color == 0) 
{ 
    JOptionPane.showMessageDialog(null, "Red it is"); 
} 

這對C#有什麼影響?

+0

不知道java的showOptionDialog,但也許這會有所幫助:[/ url](http://www.codeproject.com/Articles/17026/TaskDialog-for-WinForms) - CodeProject上還有其他類似的,但我注意到你的'WinForms'標籤... – Liam

+0

標題說C#。問題關於Java?這是什麼? –

回答

5

恐怕答案是:你不能。

據我所知,沒有辦法改變MessageBox。你需要編寫你自己的對話框(不那麼難)。

可能MessageBox類在最後進行WinApi調用,這可能是主要原因。

0

我不認爲你可以。該messagebox類只有私人構造函數,所以你不能從它派生。然而,正如SoMoS已經寫過的那樣,你可以通過使用windows窗體和showdialog()方法來創建自己的自定義消息框。希望它可以幫助

+0

寫一個答案只是說「其他答案是正確的」有什麼意義?如果您覺得這是正確的,請提供其他答案。 – Servy

+0

解答存在回答問題,而不是作爲放置任何東西的地方。如果您想分享與問題/答案相關的有趣信息,但這些信息不能構成完整的答案,則應將其發佈爲評論。這將是這種情況下的適當迴應。 – Servy

+1

真的,他可以upvote,但兩個答案都有差異,_firefly_提到OP可以使用_windows form_和_ShowDialog()_來獲得這樣的消息框。 – Coder

0

我想這你想要做什麼:

http://snipplr.com/view/14245/custom-messagebox-buttons/

這裏是類似的方法,在C++中,但更多的解釋:

http://www.codeproject.com/Articles/10037/How-to-change-the-MessageBox-window-Add-controls-a

注:請注意,WinApi消息箱經過優化,即使在內存條件非常低的情況下也能夠顯示。所以操作系統可以在崩潰或內存不足的情況下顯示消息。

如果你像上面那樣混淆它,你可能會失去一些穩健性。