2009-07-18 6 views
4

Dans mon application, j'autorise l'utilisateur à sélectionner des éléments correspondant à des fichiers sur un disque. Lorsque l'utilisateur appuie sur Ctrl + C, je veux que le fichier soit envoyé au presse-papiers, où l'utilisateur peut alors coller le fichier ailleurs.Comment configurer le presse-papiers pour copier des fichiers?

Je veux l'implémenter d'une manière telle que l'utilisateur puisse copier, mais pas coller dans mon application. L'utilisateur est alors libre de coller le fichier dans des instances d'Explorer ou d'autres applications acceptant le fichier depuis le presse-papiers.

Je sais comment définir des informations dans le Presse-papiers, mais pas comment le configurer afin que Windows le reconnaisse comme opération de copie pour certains fichiers.

Comment puis-je accomplir ceci?

Répondre

9

Pour attraper le CTRL + C, vous pouvez vérifier les touches enfoncées sur l'événement KeyPress. Et pour copier le fichier (s) utiliser quelque chose de similaire à ci-dessous:

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); 
} 
+0

Cela lance une 'ArgumentException' pour moi dans C# .NET 4.0 –

6

utiliser simplement la classe Presse-papiers:
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

Utilisez la méthode SetFileDropList pour rendre Windows le reconnaître comme une opération de copie:
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.setfiledroplist.aspx

Si les données de votre application ne repose pas sur réelle Je vous suggère de les générer en tant que fichiers temporaires dans le dossier temporaire de l'utilisateur et de les ajouter à la liste de paramètres.

+0

THanks, va faire un essai. Oui, ils sont des fichiers réels sur le disque de l'utilisateur. –

Questions connexes