28

Windows フォームの TreeView (ノード、サブノード)があります。各ノードには、そのタグにいくつかの追加情報が含まれています。また、各ノードはディスク上のファイルをマップします。C#でノード/ファイルをコピー/カット/ペーストする最も簡単な方法は何ですか?

サンプルコードがあると助かります。

4

2 に答える 2

50

Clipboard クラスの使用を検討してください。Windows クリップボードにデータを置き、Windows クリップボードからデータを取得するために必要なすべてのメソッドを備えています。

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

上記のコードは、ファイル test.txt と test2.txt を Windows クリップボードにコピーします。コードを実行した後、任意のフォルダーに移動して、ファイルを貼り付ける ( Ctrl+ V) ことができます。これは、Windows エクスプローラーで両方のファイルを選択し、コピー ( Ctrl+ C) を選択することと同じです。

于 2008-10-17T10:07:28.393 に答える
5

アプリケーション内でコピーと貼り付けのみを行っている場合は、ツリービューの切り取り/コピー操作を、選択したノードのクローンを作成する方法にマップできます。すなわち:

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.

他のアプリケーションに貼り付けたい場合は、クリップボードを使用する必要があります。IDataObjectインターフェイスについて学習することで、単なるプレーン テキストよりも少し手の込んだものにすることができます。ソースは思い出せませんが、自分のメモにあったものを次に示します。

IDataObject メソッドをクラスに実装すると、ユーザーはデータを複数の形式でクラスのインスタンスに格納できます。データを複数の形式で保存すると、形式要件がわからないターゲット アプリケーションが、保存されたデータを取得できる可能性が高くなります。IDataObject のインスタンスにデータを格納するには、SetData メソッドを呼び出して、format パラメーターでデータ形式を指定します。格納されたデータを取得するときに別の形式に変換したくない場合は、autoConvert パラメータを false に設定します。IDataObject の 1 つのインスタンスで SetData を複数回呼び出して、複数の形式でデータを格納します。

IDataObjectを実装するオブジェクト (たとえば、yourTreeNodeDataObjectと呼ばれるもの) を設定したら、次を呼び出すことができます。

Clipboard.SetDataObjecT(yourTreeNodeDataObject);
于 2008-10-17T18:28:12.923 に答える