C#でクリップボードにデータを入れる
MS-DOSからWindowsに移行したときに感動した機能の一つが、クリップボードです。なんて簡単にアプリ間のデータ移動が出来るのでしょう。ということで、C#からクリップボードにデータを入れてみます。 試した環境は下記です。
- Visual Studio 2015 Express for Windows Desktop 
目次
Clipboardクラスを使う
C#からクリップボードにアクセスするには、Clipboardクラスを使います。データをセットする場合は、ClipboardクラスのSetData()メソッドです。
SetData(format, data);
| 引数 | 型 | 内容 | 
|---|---|---|
| format | DataFormats | クリップボードに入れるデータのフォーマット。 | 
| data | object | クリップボードに入れるデータ。 | 
dataはobject型と指定されてますが、フォーマットをDataFormats.Textにしてstring型の変数を指定した場合、objectにキャストしようとすると「冗長だ」と怒られます。 戻り値はありません。
試してみた
TextBoxの文字列を、ボタンを押したらクリップボードに入れるアプリを作ってみます。
コード
まずXAMLです。
<Window x:Class="clipboard_trial.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:clipboard_trial"
        mc:Ignorable="d"
        Title="MainWindow" Height="100" Width="200">
    <Grid>
        <StackPanel>
            <TextBox Name="textbox" Margin="5" />
            <Button Margin="5" Content="クリップボードにコピー" Click="Button_Click" />
        </StackPanel>
    </Grid>
</Window>
特に変わったことはしてません。 続いてコードです。
using System.Windows;
namespace clipboard_trial
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string text = textbox.Text; // テキストボックスに入力されている値を取得する。
            if (text != "")
            {
                Clipboard.SetData(DataFormats.Text, text);
                MessageBox.Show("クリップボードにコピーしました。");
            }
        }
    }
}
TextBoxが空の場合にはボタンを押しても何もしないようにしました。
公開日
広告
C#の入出力カテゴリの投稿
- C#でCSVファイルを読み込んでコレクションに入れてみた
- C#でInputBoxを使ってみた
- C#で「名前を付けて保存」ダイアログを使ってみた
- C#でクリップボードから文字列を取得する
- C#でクリップボードにデータを入れる
- C#でコマンドライン引数を取得する
- C#でテキストファイルを読んでみた (File.ReadAllText編)
- C#でドロップされたファイルの名前を得る(WPF編 DragOver版)
- C#でドロップされたファイルの名前を得る(WPF編 PreviewDragOver版)
- C#でドロップされたファイルの名前を得る(Windowフォーム編)
- C#でパイプを使ってデータを入力してみる
- C#でメッセージボックスを使う
