あんみんどうふです。
C#のフォームアプリケーションでクリップボードを操作する時、たまによくわからんエラーに遭遇するのでその対策を備忘録として残します。超簡単です。
例えば、以下のフォームがあるとします。
TextBoxに文字を入力して、「コピー」と書かれたButtonをクリックすると入力した文字がクリップボードにコピーされるようにします。
1 2 3 4 5 6 | using System.Windows.Forms; private void button1_Click(object sender, EventArgs e) { Clipboard.SetText(textBox1.Text); } |
これで実行してみるとまあ普通にコピーされます。
メモ帳などでペーストしてみても特に問題ありません。
しかし何回か繰り返していると・・・。
こんな単純なプログラムなのにエラーが起きます。
原因はよくわかりませんが、エラーが起きても普通にコピー出来ていたりするのでますますよくわかりません。
対策
「Clipboard.Clear();」を先に行うことで対策できます。
1 2 3 4 5 6 7 | using System.Windows.Forms; private void button1_Click(object sender, EventArgs e) { Clipboard.Clear(); Clipboard.SetText(textBox1.Text); } |
これだけ。
この程度なら例外処理を無視しても問題なさそうですが、基本的にはClipboard.Clearで初期化してあげた方がよさそうです。