如何在c#中将多个项目复制到剪贴板历史记录?

如何在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

我正在使用WinAPI中的剪贴板类(
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);
}
}
}
注意,如果这些项目没有全部添加,则可以增加延迟时间