Copia i file negli appunti in C #

Ho un TreeView di Windows Form (nodo, sottonodes). Ogni nodo contiene alcune informazioni aggiuntive nel suo Tag. Inoltre, ogni nodo mappa un file sul disco. Qual è il modo più semplice di copiare / tagliare / incollare nodes / file in C #?

Sarebbe bello avere qualche codice di esempio.

Prendi in considerazione l’utilizzo della class Clipboard . Presenta tutti i metodi necessari per inserire i dati negli Appunti di Windows e per recuperare i dati dagli Appunti di Windows.

StringCollection paths = new StringCollection(); paths.Add("f:\\temp\\test.txt"); paths.Add("f:\\temp\\test2.txt"); Clipboard.SetFileDropList(paths); 

Il codice sopra metterà i file test.txt e test2.txt per la copia negli Appunti di Windows. Dopo aver eseguito il codice è ansible navigare in qualsiasi cartella e incollare (Ctrl + V) i file. Ciò equivale a selezionare entrambi i file in Esplora risorse e selezionare Copia (Ctrl + C).

Se si copia e incolla solo all’interno dell’applicazione, è ansible associare l’operazione di copia / copia della vista albero a un metodo che clona solo il nodo selezionato. Vale a dire:

 TreeNode selectedNode; TreeNode copiedNode; selectedNode = yourTreeview.SelectedNode; if (selectedNode != null) { copiedNode = selectedNode.Clone; } // Then you can do whatever you like with copiedNode elsewhere in your app. 

Se vuoi essere in grado di incollare su altre applicazioni, dovrai usare gli appunti. Puoi ottenere un po ‘di più del semplice testo imparando di più sull’interfaccia IDataObject . Non riesco a ricordare la fonte, ma ecco qualcosa che ho avuto nelle mie note:

Quando implementati in una class, i metodi IDataObject consentono all’utente di memorizzare i dati in più formati in un’istanza della class. La memorizzazione dei dati in più di un formato aumenta le possibilità che un’applicazione di destinazione, i cui requisiti di formato non siano noti, possano recuperare i dati memorizzati. Per memorizzare i dati in un’istanza di IDataObject, chiamare il metodo SetData e specificare il formato dei dati nel parametro format. Impostare il parametro autoConvert su false se non si desidera che i dati memorizzati vengano convertiti in un altro formato quando viene recuperato. Richiamare SetData più volte su un’istanza di IDataObject per archiviare i dati in più di un formato.

Dopo aver popolato un object che implementa IDataObject (ad es. Qualcosa chiamato yourTreeNodeDataObject ), puoi chiamare:

 Clipboard.SetDataObjecT(yourTreeNodeDataObject);