2012-08-14 130 views
5

Clipboard.SetText("")拋出錯誤 - 「值不能爲空」。那麼如何複製使用Clipboard.SetText的空字符串?我已經完成Clipboard.Clear()。它確實清除了剪貼板,但它並沒有幫助我粘貼一個空字符串使用Clipboard.SetText複製空字符串(字符串)

有什麼建議嗎?

+0

爲什麼你需要粘貼空字符串?你需要粘貼新行嗎? – JleruOHeP 2012-08-14 13:40:48

+1

也許和我一樣的問題:當選擇是一個空字符串時,他想保持它的好和簡單,沒有特殊情況。我很想知道在允許「正常」字符串時是否存在阻止空字符串的技術原因。 – 2013-04-02 16:55:28

回答

6

如果您嘗試使用Clipboard.SetText保存null或空字符串,它將無法工作。

請參閱Clipboard.SetText Method (String)(MSDN)。它提到如果文本爲空或EmptyClipboard.SetText,則拋出ArgumentNullException。

因此,你無法實現你正在努力實現的目標。

+4

POLA違規,如果我見過一個;)「我們對非空值拋出一個參數*空*異常」...... whut?! – 2013-10-29 14:29:37

8

我認爲你需要做的

Clipboard.Clear() 

MSDN

系統剪貼板中清除任何數據。

+0

這是一個更有用的答案。 – 2017-01-15 14:00:36

3

​​

Clipboard.Clear(); 

將清除剪貼板中,這樣你就會 「粘貼」 空字符串。

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("")實際上會將一個空字符串值放入剪貼板。在粘貼時,目標應用程序可以分辨出它們的差異,如果需要,它們的行爲會有所不同。

+0

Re:*「參考'PresentationCore.dll'」*:或者也許只是在「.NET」選項卡(第一個選項卡)中使用'PresentationCore'? – 2017-01-15 14:28:44

+0

當我嘗試這個,用'System.Windows.Clipboard。SetText()',我得到一個空**的**異常**(對於'Forms'),​​但是對於非空字符串沒有例外。它依賴於.NET版本嗎? C#版本?參考「PresentationCore」(在C#項目的***參考***下)中的「路徑」爲:C:\ Program Files文件(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.0 \ PresentationCore.dll – 2017-01-15 14:37:08

+0

@PeterMortensen我在參考文獻中有相同的路徑。我正在運行Windows 10 build 15007,聲稱它具有.net-4.7,但在「打開或關閉Windows功能」下面也會提到.net-3.5,所以我認爲當我定位.net-3.5時它實際上正在運行在.net-3.5上,但它可能是最新的補丁版本。我無法弄清楚如何讓'System.Windows.Clipboard.SetText()'拋出空字符串。你確定你不是真的把它傳遞給null而不是空字符串嗎? – binki 2017-01-16 16:15:03