C#程序退出时剪贴板会自动清空

4
我希望在 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个回答

2
解决方案是在调用SetDataObject时将copy参数设置为true:
Clipboard.SetDataObject(dataObject, true);

在你的情况下,你可以更好地使用 GetTextSetText:

string preResultText = Clipboard.GetText();

Clipboard.SetText("test");

string resultText = Clipboard.GetText();

谢谢,我知道我需要在某个地方作为参数传递true,这就是它。 - NRade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接