2

想知道是否可以创建一个带有自定义按钮的 MessageBox,类似于在 java 中使用 showOptionDialog 实现的功能?

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# 中的等价物是什么?

4

3 回答 3

4

恐怕答案是:你不能。

据我所知,没有办法改变 MessageBox 。您将需要编写自己的对话框(并不难)。

可能 MessageBox 类在最后进行了 WinApi 调用,这可能是主要原因。

于 2012-11-21T15:29:40.460 回答
1

我认为这可以满足您的要求:

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 消息框经过优化,即使在内存非常低的情况下也能显示。因此操作系统可以在崩溃或内存不足的情况下显示消息。

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

于 2014-01-30T00:13:11.693 回答
0

我不认为你可以。messagebox 类只有私有构造函数,所以你不能从它派生。然而,正如 SoMoS 已经写的那样,您可以使用 windows 窗体及其 showdialog() 方法制作自己的自定义消息框。希望它有所帮助

于 2012-11-21T15:39:31.220 回答