【问题标题】:windows form applications' cut copy paste functionalityWindows 窗体应用程序的剪切复制粘贴功能
【发布时间】:2015-05-07 15:06:55
【问题描述】:

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

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

或者任何 1 都可以判断是否有任何方法可以获取选定的文本(尽管知道我的应用程序的表单/控件)。

提前谢谢...

【问题讨论】:

标签: c# .net winforms


【解决方案1】:

您是否使用剪贴板来复制和粘贴数据,如果不是使用剪贴板来进行此操作

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

【讨论】:

  • 感谢您的回复。我检查了链接。在这种情况下,程序员知道选择了哪个文本框。我想要通用解决方案。假设我有数千行和列的数据网格。现在我不知道用户选择了哪些单元格文本。我有很多表格要处理。因为用户可以同时打开多个表单。所以我不想为每个控件和表单实现这种技术。只是寻找通用的方式。
  • 检查这可能会对您有所帮助:voidspace.org.uk/ironpython/winforms/part8.shtml
【解决方案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());

【讨论】:

  • 我有多个表单的 mdi 应用程序,当用户在任何表单中选择一些文本并按下应用程序主菜单中的复制按钮时,每个表单可以有多个文本框我希望复制所选文本
【解决方案3】:

关于你的第二个问题:

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

【讨论】:

  • 它对我不起作用。因为我有 MDI 应用程序。通过获得活动控件,我获得了单击工具栏的按钮,而不是我选择另一种形式的文本(mdi 子)的文本框
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多