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

本文关键字:清除 退出 程序 剪贴板 | 更新日期: 2023-09-27 18:20:02

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

resultText="测试"

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

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

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

Clipboard.SetDataObject(dataObject, true);

在您的情况下,您可能会更好地使用GetTextSetText:

string preResultText = Clipboard.GetText();
Clipboard.SetText("test");
string resultText = Clipboard.GetText();