2014-08-29 71 views
4

我希望程序退出時保留C#程序中剪貼板的內容。剪貼板在C#程序退出時自動清除

例如在與下列按鈕點擊事件的簡單WinForm應用程序:

private void button1_Click(object sender, EventArgs e) 
    { 
    string preResultText = Clipboard.GetData(DataFormats.StringFormat) as string; 

    DataObject dataObject = new DataObject(); 
    dataObject.SetData(DataFormats.StringFormat, true, "test"); 
    Clipboard.SetDataObject(dataObject); 

    string resultText = Clipboard.GetData(DataFormats.StringFormat) as string; 

    } 

preResultText應相同resultText當該程序被運行兩次,該按鈕被每次運行期間按下一次。

相反,我得到:

preResultText = NULL

resultText = 「測試」

在SetData的布爾參數大概意思來解決這個問題,但沒有我的機器上。我已經在其他地方讀到過,這不是默認行爲,但這仍然讓我想知道爲什麼會發生。建議?

回答

2

的解決方案是將copy參數設置爲true上的SetDataObject電話:

Clipboard.SetDataObject(dataObject, true); 

在你的情況,你可能更好地使用GetTextSetText

string preResultText = Clipboard.GetText(); 

Clipboard.SetText("test"); 

string resultText = Clipboard.GetText(); 
+0

謝謝,我知道我需要傳遞true作爲參數* somewhere *就是這樣。 – NRade 2014-08-29 11:45:21