俺的アウトラインプロセッサーをつくる

現在、アウトラインプロセッサを作成していますが、今回はノードをコピーしたりペーストできるようにします。

Ctrl+Cでコピーし、Ctrl+Vでペーストします。

SyncTreeViewクラスはこのようになっています。

SyncTreeViewクラスを継承したSyncTreeViewExクラスではCopyToClipboardメソッドをこのようにオーバーライドします(仮想メソッドではないのでオーバーライドではないけど・・・)。

CopyToClipboardを実行するまえにSaveToMoromyを実行し、RichTextBoxのデータをRichDataに保存しています。

コピーはそのままコピーするのではなく、オブジェクトの参照先もコピーする必要があります。そこでMemoryStreamを作成してそこに保存しています。これをClipboard.SetDataを使ってクリップボートに転送しています。

Clipboard.SetData、Clipboard.GetDataを呼び出すときにクリップボードフォーマットを指定する必要があります。これは既存のものとダブってはいけないのですが、実行ファイルのパスを使用しています。これで既存のものとダブることはないはず・・・。

SyncTreeView.RestoreNodesの処理に関してはこちらを参照してください。

TreeViewをファイルに保存する方法

これも

PasteFromClipboardの第二引数を変えることでペーストする位置を変える(ノードの次の位置、前の位置、最初の子の位置)ことができます。