クリップボードに文字列だけをコピーする方法は「クリップボードに文字列をコピーする」で、画像だけをコピーする方法は「クリップボードに画像をコピーする」で、ファイルのみをコピーする方法は「クリップボードにファイルをコピーする」で紹介しています。しかし、例えば文字列と画像の両方のデータをクリップボードにコピーすることもできます。ここでは、このように複数の形式のデータをクリップボードに格納する方法を紹介します。
クリップボードに複数の形式に関連付けられたデータをコピーするには、まずDataObjectオブジェクトを作成して、そのSetDataメソッドでデータを追加し、最後にClipboard.SetDataObjectメソッドでクリップボードに貼りつけます。
文字列と画像、さらにファイル形式でデータをクリップボードに格納する例を示します。このようにしてコピーすれば、テキストエディタでは文字列として、ペイントでは画像として、エクスプローラではファイルとして貼り付けることができます。
'Imports System.Drawing 'Imports System.Windows.Forms Dim filePath As String = "C:\test.jpg" 'DataObjectオブジェクトを作成し、Text形式のデータを追加する Dim data As New DataObject(DataFormats.Text, filePath) 'Bitmap形式のデータを追加する Dim bmp As New Bitmap(filePath) data.SetData(DataFormats.Bitmap, bmp) 'FileDrop形式のデータを追加する data.SetData(DataFormats.FileDrop, New String() {filePath}) 'クリップボードに貼り付ける Clipboard.SetDataObject(data, True) '後始末 bmp.Dispose()
//using System.Drawing; //using System.Windows.Forms; string filePath = @"C:\test.jpg"; //DataObjectオブジェクトを作成し、Text形式のデータを追加する DataObject data = new DataObject(DataFormats.Text, filePath); //Bitmap形式のデータを追加する Bitmap bmp = new Bitmap(filePath); data.SetData(DataFormats.Bitmap, bmp); //FileDrop形式のデータを追加する data.SetData(DataFormats.FileDrop, new string[] { filePath }); //クリップボードに貼り付ける Clipboard.SetDataObject(data, true); //後始末 bmp.Dispose();
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。