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#でメッセージボックスを使う