|
.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」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



