MessageBox Buttons

本文关键字:Buttons MessageBox | 更新日期: 2023-09-27 18:00:26

是否有一种快速的方法可以在简单的Windows.Forms.MessageBox中显示"显示信息"按钮?

我想让用户在出现错误时可以选择查看stack trace,但有时它会显示很长的结果,并使消息窗口变得混乱。

catch (Exception ex)
{
  MessageBox.Show("exception " + ex.StackTrace);
}

MessageBox Buttons

没有,很遗憾没有。创建一个自己的表单,或者看看WindowsAPICodePack,那里有很棒的东西。

您不能直接这样做,但您可以通过询问用户来使用yesno按钮的好处:您想查看异常吗。如果用户单击"是",则显示异常;如果用户单击否,则关闭消息框。

 catch (Exception ex)
 { 
   DialogResult dialogResult = MessageBox.Show("Exception catched , would you like to view the exception?", "Exception", MessageBoxButtons.YesNo);
   if(dialogResult == DialogResult.Yes)
   {
     MessageBox.Show("exception " + ex.StackTrace);
   }
 }

希望它能工作,并对任何错误表示歉意

否。这是不可能的。标准MessageBox仅支持:是、否、取消、重试和确定按钮。

但是您可以编写自己的MessageBox表单类并使用它。

或者,您可以使用"是否"按钮创建一个Messagebox,并在消息中写一个问题"想查看更多信息吗?",当用户按下"是"时,您会向他显示另一个带有堆栈跟踪的窗口。

我会(并且必须)显示堆栈的前200个字符,然后允许他们下载一个包含完整堆栈的文本文件(如果选择的话)。

下面的代码示例:

// C#
//Display frmAbout as a modal dialog
Form frmAbout = new Form();
frmAbout.ShowDialog();

如果你把一个表单专门用于它,你可以做一些非常好的事情,比如"向我发送错误"-电子邮件按钮等。

您可以使用异常消息框。

 try
 {
   // Do something that may generate an exception.
    throw new ApplicationException("An error has occured");
 }
 catch (ApplicationException ex)
 {
    // Define a new top-level error message.
    string str = "The action failed.";
    // Add the new top-level message to the handled exception.
    ApplicationException exTop = new ApplicationException(str, ex);
    exTop.Source = this.Text;
    // Show an exception message box with an OK button (the default).
    ExceptionMessageBox box = new ExceptionMessageBox(exTop);
    box.Show(this);
 }

你可以参考http://technet.microsoft.com/en-us/library/ms166340.aspx