【C#.NET解説】 クリップボード操作を簡単に実現するClipboardクラスの機能と使い方

2025年3月17日月曜日

システム 基本

t f B! P L

名前空間 System.Windows

自己紹介

おお、そなたよ!我は障害を取り除き、道を切り開く存在である。今日は、C#.NETの「ClipboardData」クラスについて語ろう。このクラスは、システムのクリップボードとデータのやり取りを行うのに使われるのだ。

基本機能

「ClipboardData」クラスを使えば、テキストや画像などのデータをクリップボードに格納したり、取得したりできる。以下に基本的なサンプルコードを示そう。

C#
using System;
using System.Windows.Forms;

class Program {
    [STAThread] // 必須
    static void Main() {
        Clipboard.SetText("こんにちは、世界!"); // クリップボードに文字列を設定
        string text = Clipboard.GetText(); // クリップボードから取得
        Console.WriteLine("クリップボードの内容: " + text);
    }
}

よく使う場面と注意点

「ClipboardData」クラスは、コピー&ペースト機能を実装する際に便利だが、以下のような注意点がある。

  • クリップボードがロックされていると、データの取得に失敗することがある。
  • 大きなデータを扱うと、パフォーマンスに影響を与える可能性がある。

例えば、クリップボードの内容を安全に取得するコードを示そう。

C#
using System;
using System.Windows.Forms;

class Program {
    [STAThread]
    static void Main() {
        try {
            if (Clipboard.ContainsText()) {
                string text = Clipboard.GetText();
                Console.WriteLine("クリップボードの内容: " + text);
            } else {
                Console.WriteLine("クリップボードにはテキストがありません。");
            }
        } catch (Exception ex) {
            Console.WriteLine("クリップボードの読み取りに失敗: " + ex.Message);
        }
    }
}

さまざまなメソッド

「ClipboardData」クラスには、さまざまなデータ型を扱うためのメソッドが用意されている。以下にいくつかの例を示そう。

画像データをクリップボードに設定・取得する場合:

C#
using System;
using System.Drawing;
using System.Windows.Forms;

class Program {
    [STAThread]
    static void Main() {
        Bitmap bmp = new Bitmap(100, 100);
        using (Graphics g = Graphics.FromImage(bmp)) {
            g.FillRectangle(Brushes.Red, 0, 0, 100, 100);
        }
        Clipboard.SetImage(bmp);

        if (Clipboard.ContainsImage()) {
            Image img = Clipboard.GetImage();
            Console.WriteLine("画像データがクリップボードに存在します。");
        }
    }
}

具体的な使い方

次に、テキスト、ファイルのデータをクリップボードに設定する例を示そう。

C#
using System;
using System.Windows.Forms;

class Program
{
    [STAThread] // 必須
    static void Main()
    {
        //テキスト
        Clipboard.SetText("テキストをクリップボードに格納!");

        //ファイル
        StringCollection files = new StringCollection();
        files.Add(@"C:\example\file1.txt");
        files.Add(@"C:\example\file2.txt");
        Clipboard.SetFileDropList(files);
    }
}

それ以外の便利なメソッド

最後に、その他の便利なメソッドを紹介しよう。

  • Clipboard.Clear() - クリップボードの内容をクリアする
  • Clipboard.ContainsData("フォーマット") - 指定フォーマットのデータが存在するか確認する
  • Clipboard.SetDataObject(object, bool) - データをクリップボードに設定し、永続化を指定

例えば、クリップボードをクリアするコードは以下の通りだ。

C#
using System;
using System.Windows.Forms;

class Program {
    [STAThread]
    static void Main() {
        Clipboard.Clear();
        Console.WriteLine("クリップボードをクリアしました。");
    }
}

これで「ClipboardData」クラスの解説は終わりだ。そなたのプログラミングの道が開かれることを願っておるぞ!

このブログを検索

QooQ