windows表单应用程序的剪切复制粘贴功能

时间:2010-06-09 12:15:36

标签: c# .net winforms

我有Windows窗体应用程序,其中包含多个窗体和控件。我希望如果用户在任何形式的应用程序的任何控件中选择了一些文本,并点击工具栏操作上的剪切/复制/粘贴按钮,则相应地执行。

我在单击复制按钮时使用C#.net的sendkeys.send(“^ c”)但它不起作用...

或任何1可以判断是否有任何方法可以获取所选文本(尽管知道,我的应用程序的形式/控制)。

提前致谢...

3 个答案:

答案 0 :(得分:5)

您是否使用剪贴板复制并粘贴数据(如果不是使用剪贴板)

查看此文章,了解有关剪贴板的更多信息:http://www.geekpedia.com/tutorial188_Clipboard-Copy-and-Paste-with-Csharp.html

答案 1 :(得分:2)

我在处理复制事件的方法中使用它:

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());

答案 2 :(得分:1)

关于你的第二个问题:

您可以使用此解决方案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