2014-08-29 56 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