我希望在退出程序时保留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中的布尔参数可能是为了解决这个问题,但不在我的机器上.我在其他地方读到这不是默认行为,但这仍然让我想知道为什么会发生这种情况.建议?
解决方法:
解决方案是在调用SetDataObject时将copy参数设置为true:
Clipboard.SetDataObject(dataObject, true);
在您的情况下,您可以更好地使用GetText和SetText:
string preResultText = Clipboard.GetText();
Clipboard.SetText("test");
string resultText = Clipboard.GetText();