.NET TIPS クリップボードへデータを送るには?デジタルアドバンテージ2004/05/14 |
|
|
クリップボードからデータを受け取る方法については「TIPS:クリップボードからデータを受け取るには?」で解説した。本稿では逆に、クリップボードへデータを送る(データをコピーする)ための基本的なコーディングについて解説する。
テキストのコピー
まず、テキスト(文字列)のクリップボードへのコピーだが、これは非常に簡単で、その文字列をClipboardクラス(System.Windows.Forms名前空間)の静的なメソッドであるSetDataObjectメソッドで指定するだけだ。
Clipboard.SetDataObject("クリップボードへコピー");
ただし、このメソッドにより格納したクリップボードのデータは、メソッドを呼び出しているアプリケーションを終了すると消えてしまう。アプリケーションが終了してもクリップボードにデータを残したままにするには、2つのパラメータを取るSetDataObjectメソッドを使用し、その第2パラメータでtrueを指定すればよい(上記の呼び出し例は第2パラメータでfalseを指定した場合と同じ)。
Clipboard.SetDataObject("クリップボードへコピー", true);
次のサンプル・プログラムは、コマンドラインのパラメータで指定されたテキスト・ファイルを読み込み、このメソッドを利用してその内容をクリップボードに送るコンソール・アプリケーションである。
|
|
指定されたファイルを読み込みクリップボードに送るC#のサンプル・プログラム(file2clip.cs) | |
|
|
指定されたファイルを読み込みクリップボードに送るVB.NETのサンプル・プログラム(file2clip.vb) | |
なお、ファイルの読み込みについては「TIPS:テキスト・ファイルの内容を読み込むには?」で解説している。
画像のコピー
画像(ビットマップ)のクリップボードへの送信も、テキストの場合と同様にSetDataObjectメソッドを使って簡単に行える。例えば、画像ファイルを読み込んだBitmapオブジェクト(Bitmapクラス(System.Drawing名前空間)のオブジェクト)を参照している変数bmpがあるとすると、それをクリップボードに送信するには次のように記述すればよい(より具体的な例は後述)。
Clipboard.SetDataObject(bmp);
複数のデータ形式でコピー
ところで、クリップボードは1つのデータを複数のデータ形式で保持することができるが、そのような複数形式のデータを送信するにはどうすればよいだろうか。上述したようなSetDataObjectメソッドの呼び出しを何回行っても、後から送信したデータでクリップボードの内容が置き換わるだけである。
このような場合には、まず複数のデータを格納可能なDataObjectクラス(System.Windows.Forms名前空間)を使用してクリップボードに送信するデータを作成する。そして、そのDataObjectオブジェクトをClipboardクラスのSetDataObjectメソッドで送信すればよい。DataObjectオブジェクトにデータを“追加”するには、SetDataメソッドを使用する。コードの記述例は次のようになる。
DataObject data = new DataObject();
data.SetData(text);
data.SetData(bmp);
Clipboard.SetDataObject(data, true);
次のサンプル・プログラムでは、テキスト形式とビットマップ形式の2つのデータ形式を使ってクリップボードにデータを送信している。送信するビットマップは、文字列をグラフィックで描画したものだ。ビットマップを作成する処理は、プログラム内のCreateTextBitmapメソッドにまとめている。このメソッドは、パラメータで指定された文字列を、指定された文字サイズで描画したBitmapオブジェクトを返す。
|
|
テキスト形式とビットマップ形式のデータをクリップボードに送信するサンプル・プログラム(setclpbrd.cs) | |
|
|
テキスト形式とビットマップ形式のデータをクリップボードに送信するサンプル・プログラム(setclpbrd.vb) | |
このプログラムを実行してから、「TIPS:クリップボードからデータを受け取るには?」で示した、クリップボードのデータを表示するサンプル・プログラムを実行してボタンをクリックすれば、次のような画面になるはずだ。
クリップボードに格納されたテキストと画像を表示するサンプル・プログラム |
このサンプル・プログラムについては「TIPS:クリップボードからデータを受け取るには?」で解説している。 |
これは、「こんにちわ .NET」という文字列が、テキストおよび画像としてクリップボードに格納されていることを示している。
カテゴリ:Windowsフォーム 処理対象:クリップボード
使用ライブラリ:Clipboardクラス(System.Windows.Forms名前空間) 使用ライブラリ:Bitmapクラス(System.Drawing名前空間) 使用ライブラリ:DataObjectクラス(System.Windows.Forms名前空間) 関連TIPS:クリップボードからデータを受け取るには? 関連TIPS:テキスト・ファイルの内容を読み込むには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|