1

と を使用した単純な Windows フォーム アプリケーションがありTextBoxますButton。をクリックすると、Buttonフォーカスが置かれ、TextBoxキーストロークがシミュレートCtrl + Cされて、コンテンツがクリップボードにコピーされます。このキーシミュレーションを で行っておりSendInput、 も試しSendKeys.Send("^c")ました。コンテンツをメモ帳などに貼り付けることで確認できるため、これはコピー操作に対して適切に機能します。

次に、このコピーされた値をプログラムで取得したいと考えていますClipboard.GetText。ただし、問題は、このメソッドが現在の値ではなく、クリップボードの以前の値を常に返すように見えることです。たとえば、my の値のシーケンスがTextBox「hello」、「world」の場合、出力のシーケンスは「junk」、「hello」です。SendKeys以下は、簡単にするためにメソッドを使用した私のコードです。

... highlight TextBox value...

SendKeys.Send("^c");
Thread.Sleep(100);

Console.WriteLine(Clipboard.GetText());
4

3 に答える 3

3

テキストをクリップボードに配置する前にメッセージループを実行する必要があるようです

使ってみてください

  Application.DoEvents();

遅延の代わりに

于 2012-10-23T18:50:29.077 に答える
1
 SendKeys.SendWait("^c");
 Clipboard.GetText(TextDataFormat.Text);
于 2013-08-22T04:25:17.923 に答える
0

これを試して:

textBox1.Focus();
Clipboard.SetText(textBox1.Text);
textBox2.Text = Clipboard.GetText();
于 2012-10-23T17:36:47.083 に答える