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

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

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

有什么建议?

如果您尝试使用Clipboard.SetText保存null或空字符串,它将永远不会工作。

请参见Clipboard.SetText方法(字符串) (MSDN)。 它提到如果文本为null或者为Clipboard.SetTextEmpty ,则抛出ArgumentNullException。

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

我想你需要这样做

 Clipboard.Clear() 

来自MSDN

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

http://msdn.microsoft.com/ru-ru/library/system.windows.forms.clipboard.clear.aspx

 Clipboard.Clear(); 

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

引用PresentationCore并调用System.Windows.Clipboard.SetText(string)而不是System.Windows.Forms.Clipboard.SetText(string) 。 我用clipview来validationSystem.Windows.Clipboard.SetText(""); (不会引发exception)将空字符串存储到剪贴板中。

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

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