我有一个简单的Windows窗体应用程序,其中包含TextBox
和Button
。点击Button
会将焦点放在TextBox
上并模拟按键Ctrl + C
,将内容复制到剪贴板中。我正在使用SendInput
进行此关键模拟,也尝试了SendKeys.Send("^c")
。这适用于复制操作,因为我可以通过将内容粘贴到记事本或其他内容来验证。
然后,我想通过Clipboard.GetText
以编程方式检索此复制的值。但是,问题是此方法似乎始终返回剪贴板中的先前值而不是当前值。例如,如果我的TextBox
的值序列是:“hello”,“world”,则输出序列为:junk,“hello”。为简单起见,下面是使用SendKeys
方法的代码:
... highlight TextBox value...
SendKeys.Send("^c");
Thread.Sleep(100);
Console.WriteLine(Clipboard.GetText());
答案 0 :(得分:3)
看起来在将文本放入剪贴板之前需要执行消息循环
尝试使用
Application.DoEvents();
而不是延迟
答案 1 :(得分:1)
SendKeys.SendWait("^c");
Clipboard.GetText(TextDataFormat.Text);
答案 2 :(得分:0)
试试这个:
textBox1.Focus();
Clipboard.SetText(textBox1.Text);
textBox2.Text = Clipboard.GetText();