【发布时间】:2020-01-27 08:27:51
【问题描述】:
我正在尝试将文本从 RichtTextBox 复制到剪贴板。问题是关闭包含此文本的表单后,剪贴板上的数据消失了。 我在代码中尝试了以下内容:
我尝试了不同的方法来复制已经(单独)的东西:
Dim data As String = RichTextBox1.SelectedRtf
Clipboard.SetText(data, TextDataFormat.Rtf)
Clipboard.SetData(DataFormats.Rtf, data)
Clipboard.SetDataObject(data, True)
RichTextBox1.Copy()
无论是否指定 RTF,结果都保持不变。也可以使用普通的文本字符串和/或使用快捷键 CTRL+C。而且,当是否将“True”作为参数传递给 SetDataObject 时,没有任何变化。
我打开了一个写字板窗口来测试一下;当对话框仍然打开时复制和粘贴会导致正常粘贴。关闭对话框(但不是应用程序)会清除剪贴板并再次粘贴会导致任何内容或新行。
有谁知道为什么会发生这种行为以及如何解决它?
提前致谢!
【问题讨论】:
-
可能在关闭任何 dispose 语句时
-
我没有处理关闭表单时发生的任何事件。
-
当表单关闭或打开它的表单(如果它是模态的)时,您正在清除剪贴板。如果您使用剪贴板查看器链模型添加了剪贴板挂钩,请改用
AddClipboardFormatListener。 -
如果我没记错的话,这可以追溯到 VB6!
-
所有这些剪贴板命令将相互覆盖。每个都将完全替换剪贴板的内容。
标签: .net vb.net winforms clipboard