2010-06-09 78 views
6

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

即时通讯使用的复印按钮的点击C#.NET的sendkeys.send(“^ C”),但它不工作...

或1可以知道是否是那里得到选定的文本以任何方式(尽管知道,我的应用程序的形式/控制)。

在此先感谢...

+1

无用的答案:http://stackoverflow.com/questions/2881259/editing-many-richtextboxes-and-textboxes – 2010-06-09 12:37:28

回答

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

我有多种形式的MDI应用程序 每个表格可以有多个文本框 当用户选择任何形式的文本 和按下应用程序主菜单中的复制按钮 我希望将所选文本复制 – 2010-06-09 12:56:31

5

你用过剪贴板为更多的剪贴板复制,如果没有粘贴你的数据不是使用剪贴板此

检查这篇文章:http://www.geekpedia.com/tutorial188_Clipboard-Copy-and-Paste-with-Csharp.html

+1

感谢您的回复。我检查了链接。在这种情况下程序员知道哪个文本框被选中。我想要通用解决方案。假设我有数以千计的行和列的数据网格。现在我不知道用户选择了哪些单元格文本。我有很多形式来处理。因为用户可以同时打开多个表单。所以我不想为每个控件和窗体实现这种技术。只是寻找通用的方式。 – 2010-06-09 12:27:41

+1

比检查这可能会帮助你:http://www.voidspace.org.uk/ironpython/winforms/part8.shtml – 2010-06-09 12:42:09

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

+1

它不适合我。因为我有MDI应用程序。通过获得主动控制我得到点击按钮的工具栏,而不是文本框,我选择了另一种形式的文本(mdi子) – 2010-06-09 12:57:14

相关问题