Как скопировать изображение и текст в буфер обмена как один объект? - PullRequest
5 голосов
/ 12 ноября 2008

Я пытаюсь скопировать как изображение из файла, так и текст из файла в буфер обмена. Я собираюсь открыть текстовый документ или электронное письмо с Outlook и вставить текст и изображение в одну стандартную команду вставки (например, CTRL-V). Я могу достаточно легко сделать оба по отдельности, но выполнение их обоих за одну операцию, похоже, не работает.

Вот так у меня две эти операции работают как отдельные операции (конечно, только соответствующие строки кода, с удаленным try / catch и т.

Добавить изображение в буфер обмена:

...

Bitmap imageToAdd = new Bitmap(imageFilePath);
Clipboard.SetImage(imageToAdd);

...

Добавить текст в буфер обмена:

...

StreamReader rdr = new StreamReader(textFilePath);
string text = rdr.ReadToEnd();

Clipboard.SetText(text);

...

Я использую c # и .net 2.0 framework и ориентируюсь на Windows XP (и, вероятно, на Vista в ближайшем будущем).

ТИА

Ответы [ 3 ]

4 голосов
/ 02 декабря 2010

Вы можете использовать RTF, который может комбинировать текст и графику. Обратите внимание, что вы можете иметь CF_BITMAP и CF_TEXT в буфере обмена одновременно. Но это не полезно. Вы получите текст при вставке в блокнот, вы получите растровое изображение при вставке в Paint, и большинство других приложений выберет одно или другое, но не оба одновременно. Так что это просто академический. Вид аккуратный, в том, что неисправности транспортера на Star Trek были аккуратны. Но также грязный.

1 голос
/ 21 ноября 2008

Я заметил, что только объект может быть передан.

В этом случае, когда пользователь нажимает команду для вставки, ваш код может выполнять две функции или одну функцию рекурсивно, и каждый раз получать нужные данные и вставлять их.

Итак, посмотрите на циклы или рекурсию.

1 голос
/ 13 ноября 2008

Может быть, вы могли бы использовать SetDataObject, для которого требуется параметр Object, вы можете использовать массив объектов?

Массив объектов может содержать ваши необходимые данные.

См. Ссылку:

http://msdn.microsoft.com/en-us/library/5b8kt5z4.aspx

...