Как настроить буфер обмена для копирования файлов? - PullRequest
4 голосов
/ 19 июля 2009

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

Я хочу реализовать это таким образом, чтобы пользователь мог копировать, но не вставлять в мое приложение. Затем пользователь может свободно вставить файл в экземпляры Explorer или других приложений, которые будут принимать файл из буфера обмена.

Я знаю, как установить информацию в буфере обмена, но не знаю, как ее настроить, чтобы Windows распознала ее как операцию копирования для определенных файлов.

Как мне это сделать?

Ответы [ 2 ]

9 голосов
/ 21 июля 2009

Чтобы поймать CTRL + C, вы можете проверить нажатие клавиш на событии KeyPress. И чтобы скопировать файл (ы) используйте что-то похожее на приведенное ниже:

private void CopyFile(string[] ListFilePaths)
{
  System.Collections.Specialized.StringCollection FileCollection = new System.Collections.Specialized.StringCollection();

  foreach(string FileToCopy in ListFilePaths)
  {
    FileCollection.Add(FileToCopy);
  }

  Clipboard.SetFileDropList(FileCollection);
}
6 голосов
/ 19 июля 2009

Просто используйте класс буфера обмена:
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

Используйте метод SetFileDropList, чтобы Windows распознала его как операцию копирования:
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.setfiledroplist.aspx

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...