Как мне скопировать изображение и текст в буфер обмена как один объект?

StackOverflow https://stackoverflow.com/questions/285042

  •  08-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь скопировать как изображение из файла, так и текст из файла в буфер обмена.Мое намерение состоит в том, чтобы затем открыть документ Word или электронное письмо 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 в ближайшем будущем).

ТИА

Это было полезно?

Решение

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

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

Итак, взгляните на зацикливание или рекурсию.

Другие советы

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

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

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

Смотрите эту ссылку:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top