如何在c#中将多个项目复制到剪贴板历史记录?
我正在使用WinAPI中的剪贴板类(如何在c#中将多个项目复制到剪贴板历史记录?,c#,.net-core,uwp,windows-runtime,clipboarddata,C#,.net Core,Uwp,Windows Runtime,Clipboarddata,我正在使用WinAPI中的剪贴板类(Windows.ApplicationModel.DataTransfer.clipboard)。当我尝试将多个项目逐个复制到剪贴板历史记录时,它会被最近的项目覆盖。我想将我复制的每个项目都存储到剪贴板历史记录中。我的剪贴板历史记录已启用,我尝试使用剪贴板中的所有设置方法,包括(System.Windows.clipboard)中的SetText方法,所有这些方法都将覆盖而不是添加到历史记录中 private void UpdateClipboardO
Windows.ApplicationModel.DataTransfer.clipboard
)。当我尝试将多个项目逐个复制到剪贴板历史记录时,它会被最近的项目覆盖。我想将我复制的每个项目都存储到剪贴板历史记录中。我的剪贴板历史记录已启用,我尝试使用剪贴板中的所有设置方法,包括(System.Windows.clipboard
)中的SetText
方法,所有这些方法都将覆盖而不是添加到历史记录中
private void UpdateClipboardOnProfileDropDownClosed(object sender, EventArgs e)
{
Clipboard.ClearHistory();
using (var db = new LiteDatabase(Path.Combine(documents, "Auto Paste Clipboard", "data.db")))
{
var collection = db.GetCollection<ClipboardProfile>("clipboard");
var clipboard = collection.FindOne(x => x.Profile == ProfileComboBox.Text);
clipboard.Clipboard.Reverse();
MessageBox.Show(clipboard.Clipboard.Count.ToString());
foreach (var item in clipboard.Clipboard)
{
DataPackage data = new DataPackage
{
RequestedOperation = DataPackageOperation.Copy
};
data.SetText(item);
Clipboard.SetContent(data);
}
}
}
private void UpdateClipboardOnProfileDropDownClosed(对象发送方,事件参数e)
{
Clipboard.ClearHistory();
使用(var db=new LiteDatabase(Path.Combine(文档,“自动粘贴剪贴板”,“data.db”))
{
var collection=db.GetCollection(“剪贴板”);
var clipboard=collection.FindOne(x=>x.Profile==ProfileComboBox.Text);
clipboard.clipboard.Reverse();
Show(clipboard.clipboard.Count.ToString());
foreach(剪贴板.clipboard中的变量项)
{
数据包数据=新数据包
{
RequestedOperation=DataPackageOperation.Copy
};
data.SetText(项目);
剪贴板。设置内容(数据);
}
}
}
保存当前项目时,剪贴板的历史记录需要一些延迟。因此,您可以尝试在添加项目时添加延迟
请检查以下代码作为示例:
private async void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
if(Clipboard.IsHistoryEnabled())
{
List<string> lists=new List<string>{ "1","2","3","4","5","6","7","8","9","10"};
foreach(var item in lists)
{
DataPackage dataPackage = new DataPackage();
dataPackage.SetText(item);
Clipboard.SetContent(dataPackage);
await Task.Delay(250);
}
}
}
private async void按钮\u单击(对象发送方,Windows.UI.Xaml.RoutedEventArgs e)
{
如果(剪贴板.IsHistoryEnabled())
{
列表=新列表{“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”};
foreach(列表中的变量项)
{
DataPackage DataPackage=新数据包();
dataPackage.SetText(项目);
剪贴板.SetContent(数据包);
等待任务。延迟(250);
}
}
}
注意,如果这些项目没有全部添加,则可以增加延迟时间