MessageBox按钮

时间:2014-04-27 08:54:24

标签: c# winforms messagebox information-retrieval

是不是可以快速显示“显示信息”。简单Windows.Forms.MessageBox中的按钮?

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

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

5 个答案:

答案 0 :(得分:1)

不,不幸的是没有。 创建一个自己的表单或查看WindowsAPICodePack,那里有很棒的东西。

答案 1 :(得分:0)

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

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

或者你可以使用YesNo buttonas做一个Messagebox,并在邮件中写一个问题“想要查看更多信息吗?”当用户按下是时,你会向他显示另一个带有堆栈跟踪的窗口。

答案 2 :(得分:0)

我会(并且已经)显示堆栈跟踪的前200个字符,然后允许他们下载具有完整堆栈跟踪的文本文件(如果选择)。

以下代码示例:

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

如果您将表单专用于表单,那么您可以做一些非常好的事情,例如"向我发送错误" - 电子邮件按钮等

答案 3 :(得分:0)

您无法直接执行此操作,但您可以通过询问用户使用yesno按钮获益:您是否要查看例外情况? 。如果用户单击是,则显示异常,如果用户单击否,则只关闭messegebox。

 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);
   }
 }

希望它有效并且对任何错误感到抱歉

答案 4 :(得分:0)

您可以使用例外消息框。

 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