我在我的程序中使用windows剪贴板。我使用类似
的东西private void btnTest_Click(object sender, EventArgs e){
IDataObject data = Clipboard.GetDataObject(); //save old data
DoSomethingWithClipboard();
Clipboard.SetDataObject(data); //Set old data back}
运行良好,但在我第二次单击我的按钮后,我的旧数据消失了,我认为它在第二次使用IDataObject data = Clipboard.GetDataObject();
后覆盖了某些内容。
答案 0 :(得分:0)
在我看来,试图像这样操纵剪贴板是一个坏主意。
也就是说,这里有一些未经测试的代码可以做你想要的。
public class ClipBoardBackupRestore
{
Dictionary<string, object> clipboardContents = new Dictionary<string, object>();
public void Backup()
{
clipboardContents.Clear();
IDataObject clipboardDataObject = Clipboard.GetDataObject();
foreach (string format in clipboardDataObject.GetFormats())
{
clipboardContents.Add(format, clipboardDataObject.GetData(format));
}
}
public void Restore()
{
DataObject clipboardDataObject = new DataObject();
foreach (string format in clipboardContents.Keys)
{
clipboardDataObject.SetData(format, clipboardContents[format]);
}
Clipboard.SetDataObject(clipboardDataObject);
}
}