MessageBox Buttons
本文关键字:Buttons MessageBox | 更新日期: 2023-09-27 18:00:26
是否有一种快速的方法可以在简单的Windows.Forms.MessageBox
中显示"显示信息"按钮?
我想让用户在出现错误时可以选择查看stack trace
,但有时它会显示很长的结果,并使消息窗口变得混乱。
catch (Exception ex)
{
MessageBox.Show("exception " + ex.StackTrace);
}
没有,很遗憾没有。创建一个自己的表单,或者看看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