Это действительно зависит от формата (и в некоторых отношениях от приложения). Вы узнали, как это сделать для двух случаев, но должны знать о , почему работает так, как есть:
Когда вы пытаетесь вставить данные из буфера обмена в приложение (скажем, 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)