将系统异常消息传递给另一种形式,然后使用第二种形式通过电子邮件发送所述异常

Passing a System Exception message to another form, then using that second form to email said exception

我一直在为我的程序开发一个自定义对话框错误消息,它会为用户提供一个按钮,用于将 exception/error 代码通过电子邮件发送给开发人员。我有一个单独的对话框错误表单,我无法将异常从 Form1 传递到我创建的新错误对话框表单,然后再传递到我设置的电子邮件按钮。

这是我用来转发异常的代码:

catch (System.Exception ex)
        {
            Forms.Error ErrorDialog = new Forms.Error(ex.ToString());
            ErrorDialog.ShowDialog();                
        }

我在错误表单构造中的代码如下所示(我使用的是 DevExpress ribbonform,以防看起来不熟悉。不过它的工作方式就像 WinForm):

public partial class Error : DevExpress.XtraBars.Ribbon.RibbonForm
{
    public Error(string ex)
    {
        InitializeComponent();
    }

我的问题是将该字符串传递到我的电子邮件按钮,如下所示:

    public void btnEmail_Click(object sender, EventArgs e)
    {
        var url = "mailto:someone@email.com?subject=Error Code&body=" + ???;
        Process.Start(url);
    }

那么我需要做什么才能将该字符串附加到电子邮件中?我在编程方面有点菜鸟(我相信你能看出来),所以这可能是一种草率的尝试实现我的目标的方法:有没有更好的相对简单的方法?我的电子邮件代码是否需要更改或大修(我想使用用户的默认电子邮件客户端来撰写邮件)?

将异常存储在字段中:

public partial class Error : DevExpress.XtraBars.Ribbon.RibbonForm
{
    private readonly Exception _exception;

    public Error(Exception exception)
    {
        _exception = exception;
        InitializeComponent();
    }
}

然后在您的处理程序中引用它:

public void btnEmail_Click(object sender, EventArgs e)
{
    var url = "mailto:someone@email.com?subject=Error Code&body=" + _exception.ToString();
    Process.Start(url);
}