8

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

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

有什么建议么?

4

4 回答 4

9

我认为你需要做

Clipboard.Clear()

来自MSDN

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

于 2012-08-14T13:10:19.343 回答
9

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

请参阅Clipboard.SetText 方法(字符串)(MSDN)。它提到如果文本为 null 或Emptyfor ,则会引发 ArgumentNullException Clipboard.SetText

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

于 2012-08-14T13:14:22.247 回答
4

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

Clipboard.Clear();

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

于 2012-08-14T13:11:50.153 回答
2

引用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("")实际上将一个空字符串值放入剪贴板。当您粘贴时,目标应用程序可以分辨出差异,并且如果它愿意,它实际上会表现出不同的行为。

于 2014-07-29T17:09:46.727 回答