剪贴板在C#程序退出时自动清除

时间:2014-08-29 10:42:33

标签: c# clipboard

我希望退出程序时保留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 =" test"

SetData中的布尔参数可能是为了解决这个问题,但不在我的机器上。我在其他地方读到这不是默认行为,但这仍然让我想知道为什么会发生这种情况。建议?

1 个答案:

答案 0 :(得分:2)

解决方案是在调用copy时将true参数设置为SetDataObject

Clipboard.SetDataObject(dataObject, true);

在您的情况下,您最好使用GetTextSetText

string preResultText = Clipboard.GetText();

Clipboard.SetText("test");

string resultText = Clipboard.GetText();