0

我有一个通过 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

我想添加包含来自同一行中其他单元格的信息的功能,这些信息将包含在出现的新电子邮件窗口的主题行和正文中。以下是我正在使用的列:

Mech 电子邮件Site No(主题行),Findings (正文,但我也想添加其他评论),Days Old(正文)

4

1 回答 1

1

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

        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
于 2012-07-31T19:42:47.833 回答