2012-11-21 28 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消息箱经过优化,即使在内存条件非常低的情况下也能够显示。所以操作系统可以在崩溃或内存不足的情况下显示消息。

如果你像上面那样混淆它,你可能会失去一些稳健性。