从DGV CellClick事件填充电子邮件正文和主题

时间:2012-07-31 16:10:23

标签: .net vb.net datagridview

我有一个通过MySQL填充的datagridview。一列包含电子邮件,行将包含与该特定电子邮件地址关联的数据。我在表单中输入了以下代码,因此当用户单击带有电子邮件地址的单元格时,将打开一个新的消息窗口,并且电子邮件地址将位于mailto部分:

 Private Sub MyDataGridView_CellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
    If DataGridView1.Columns(e.ColumnIndex).HeaderText = "Mech Email" Then
        Dim selectedEMailCell As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex)
        If selectedEMailCell.Value IsNot Nothing Then
            System.Diagnostics.Process.Start("mailto:" & selectedEMailCell.Value.ToString & "")
        End If
    End If
End Sub

我希望能够添加来自同一行中其他单元格的信息,以包含在显示的新电子邮件窗口的主题行和正文中。以下是我正在使用的专栏:

机上电子邮件网站否(主题行),调查结果(正文,但我想添加其他评论),< strong> Days Old (身体)

1 个答案:

答案 0 :(得分:1)

以下是您需要的快速概述。我没有机会把它扔进编辑器,所以可能会有一些错别字。此外,我没有进行任何检查以查看其他单元格是否为空。基本mailto:语法为mailto:name@mail.com?subject=Hello&?body=Main message。还有一件事,如果您的主题或正文包含“&amp;”或者“?”,你可能需要过滤掉它们。

        Dim selectedEMailCell As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex)
        Dim selectedEMailRow As DataGridViewRow = DirectCast(DataGridView1.Rows(e.RowIndex)
        With selectedEMailRow
          If selectedEMailCell.Value IsNot Nothing Then
            Dim mailToString As New Stringbuilder
            mailToString.Append("mailto:" & .selectedEMailCell.Value.ToString)
            mailToString.Append("?subject=" & .Cells("Mech Email").value)
            mailToString.Append(.Cells("Site No").value) 
            mailToString.Append("&body=" & .Cells("Findings").value) 
            mailToString.Append(.Cells("Days Old").value) 
            System.Diagnostics.Process.Start(mailToString.ToString & "")
          End If
        End With