使用Clipboard.SetText复制空字符串(字符串)

时间:2012-08-14 13:08:31

标签: c# clipboard

Clipboard.SetText("")抛出一个错误 - “值不能为空”。那么如何使用Clipboard.SetText复制空字符串?

我已经完成了Clipboard.Clear()。它确实清除了剪贴板,但它无法帮助我粘贴空字符串

有什么建议吗?

4 个答案:

答案 0 :(得分:9)

如果您尝试使用Clipboard.SetText保存null或空字符串,它将无法正常工作。

请参阅 Clipboard.SetText Method (String) (MSDN)。它提到如果文本为null或EmptyClipboard.SetText,则抛出ArgumentNullException。

因此,你无法实现你想要实现的目标。

答案 1 :(得分:8)

我认为你需要做

Clipboard.Clear()

来自MSDN

  

清除系统剪贴板中的所有数据。

答案 2 :(得分:3)

请参阅 Clipboard.Clear Method (System.Windows.Forms) (MSDN)。

Clipboard.Clear();

将清除剪贴板,因此您将“粘贴”一个空字符串。

答案 3 :(得分:1)

参考PresentationCore并致电System.Windows.Clipboard.SetText(string)而不是System.Windows.Forms.Clipboard.SetText(string)。我使用clipview来验证System.Windows.Clipboard.SetText("");(不会引发异常)将空字符串存储到剪贴板中。

此方法可以避免您有条件地调用Clear()SetText(),具体取决于您尝试有效设置到剪贴板的字符串。如果您尝试编写代码以将剪贴板设置为任何字符串值,而不事先知道是否需要支持空字符串,则此功能尤其有用。即,这种方法可以避免像处理特殊情况一样处理空字符串(IMO,它不应该是一种特殊情况,因为这只是令人困惑)。

此外,正如clipview所见,Clear()实际上清空了剪贴板,而不是在其中放置一个空字符串。调用System.Windows.Clipboard.SetText("")实际上会将空字符串值放入剪贴板。粘贴时,目标应用程序可以分辨出差异,并且如果需要,实际上会有不同的行为。