【发布时间】:2015-05-07 15:06:55
【问题描述】:
我有 Windows 窗体应用程序,其中包含多个窗体和控件。如果用户在我的应用程序的任何形式的任何控件中选择了一些文本并单击工具栏操作上的剪切/复制/粘贴按钮,我想要相应地执行。
我在点击复制按钮时使用 C#.net 的 sendkeys.send("^c") 但它不起作用...
或者任何 1 都可以判断是否有任何方法可以获取选定的文本(尽管知道我的应用程序的表单/控件)。
提前谢谢...
【问题讨论】:
我有 Windows 窗体应用程序,其中包含多个窗体和控件。如果用户在我的应用程序的任何形式的任何控件中选择了一些文本并单击工具栏操作上的剪切/复制/粘贴按钮,我想要相应地执行。
我在点击复制按钮时使用 C#.net 的 sendkeys.send("^c") 但它不起作用...
或者任何 1 都可以判断是否有任何方法可以获取选定的文本(尽管知道我的应用程序的表单/控件)。
提前谢谢...
【问题讨论】:
您是否使用剪贴板来复制和粘贴数据,如果不是使用剪贴板来进行此操作
查看这篇文章了解更多关于剪贴板的信息:http://www.geekpedia.com/tutorial188_Clipboard-Copy-and-Paste-with-Csharp.html
【讨论】:
我在处理复制事件的方法中使用了这个:
if (this.ActiveControl is TextBox)
{
Clipboard.SetDataObject(((TextBox)this.ActiveControl).SelectedText, true);
}
if (this.ActiveControl is RichTextBox)
{
Clipboard.SetDataObject(((RichTextBox)this.ActiveControl).SelectedText, true);
}
if (this.ActiveControl is ComboBox)
{
Clipboard.SetDataObject(((ComboBox)this.ActiveControl).SelectedText, true);
}
对于粘贴,类似这样:
nCursorPosition = ((RichTextBox)this.ActiveControl).SelectionStart;
this.ActiveControl.Text = this.ActiveControl.Text.Insert(nCursorPosition, Clipboard.GetText());
【讨论】:
关于你的第二个问题:
您可以使用此解决方案What is the preferred way to find focused control in WinForms app? 来查找当前聚焦的控件。
然后检查,读取选择的类型是什么(即如果是TextBox,则使用SelectedText-Propery http://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.selectedtext.aspx)
【讨论】: