如何在 C# 中将多个项目复制到剪贴板历史记录?
How to copy multiple items to clipboard history in c#?
我正在使用来自 Win API (Windows.ApplicationModel.DataTransfer.Clipboard
) 的剪贴板 class。当我尝试将多个项目一一复制到剪贴板历史记录时,它会被最近的项目覆盖。我想将我复制的每个项目存储到剪贴板历史记录中。我的剪贴板历史已启用,我尝试使用剪贴板中的所有设置方法,包括来自 (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 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);
}
}
}
注意,如果这些项目没有全部添加,您可以增加延迟时间。
我正在使用来自 Win API (Windows.ApplicationModel.DataTransfer.Clipboard
) 的剪贴板 class。当我尝试将多个项目一一复制到剪贴板历史记录时,它会被最近的项目覆盖。我想将我复制的每个项目存储到剪贴板历史记录中。我的剪贴板历史已启用,我尝试使用剪贴板中的所有设置方法,包括来自 (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 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);
}
}
}
注意,如果这些项目没有全部添加,您可以增加延迟时间。