我正在尝试以编程方式生成格式化文本并将其复制到剪贴板,以便将其粘贴到电子邮件中。我想要复制的唯一格式是换行符和粗体文本。我希望它使用电子邮件的当前或默认字体。
许可: XXXXX
许可密钥: XXXXX
我对HTML的尝试在Windows Live Mail中产生了正确的格式,但是它有自己选择的字体。
Dim Text As String =
"Version:0.9" & vbCrLf &
"StartHTML:00000097" & vbCrLf &
"EndHTML:00000343" & vbCrLf &
"StartFragment:00000243" & vbCrLf &
"EndFragment:00000308" & vbCrLf &
"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">" & vbCrLf &
"<HTML><HEAD><TITLE>Software License</TITLE></HEAD><BODY>" & vbCrLf &
"<!--StartFragment -->" & vbCrLf &
"<P><B>Licensed to:</B> XXXXX<BR /><B>License key:</B> XXXXX</P>" & vbCrLf &
"<!--EndFragment -->" & vbCrLf &
"</BODY></HTML>"
Clipboard.SetText(Text, TextDataFormat.Html)
我尝试在写字板上正确粘贴RTF,但在Windows Live Mail中粘贴简单无效。
Dim Text As String =
"{\rtf1\ansi " &
"\b Licensed to:\b0 XXXXX\par " &
"\b License key:\b0 XXXXX\par " &
"}"
Clipboard.SetText(Text, TextDataFormat.Rtf)
有没有人知道将有限格式复制到剪贴板的解决方案。
答案 0 :(得分:4)
这是特定于格式的(在某些方面特定于应用程序)。您已经了解了如何针对两种情况执行此操作,但应该了解为什么它正常工作:
当您尝试从应用程序(例如,outlook)中的剪贴板粘贴数据时,该应用程序首先查询剪贴板以查看可用的格式,并将为其选择“最佳”格式(由Outlook确定)开发者)。如果没有可用于该应用程序的格式,那么它就好像剪贴板上没有数据一样。这解释了为什么wordpad可以处理RTF数据,但实时邮件却没有。
您可以(并且应该)做的事情是将数据以多种格式放在剪贴板上,以允许其他应用进行选择。
不使用Clipboard.SetText()
,而是使用Clipboard.SetDataObject()
,并使用多种格式填充DataObject
Dim htmlText as String = ''your working html
Dim rtfText as String = ''your working rtf
Dim data As New DataObject()
data.SetText(htmlText, TextDataFormat.Html)
data.SetText(rtfText, TextDataFormat.Rtf)
''and possibly:
data.SetText(plainText, TextDataFormat.Text)
Clipboard.SetDataObject(data)