我们可以将剪贴板文本复制到数组中

时间:2010-10-24 12:38:23

标签: c# clipboard

我试图制作一个5元素的数组列表,其中最近复制了5个剪贴板文本

但是每次剪贴板文本覆盖前一个和第一个数组元素时我都无法做到这一点

并且只打印我想要打印的最后一个我怎么能这样做。

如果我的情况有可能请给我一些解决方案

2 个答案:

答案 0 :(得分:1)

如何:在Clipboard上读/写时管理自定义对象。例如,MyCustomClipboardClass

每次你要在剪贴板上移动数据;

  • 获取MyCustomClipboardClass对象。
  • 将文字添加到其中。
  • 将该对象保存到剪贴板上。

见以下内容:

[Serializable]
class MyCustomClipboardClass
{
    List<string> m_lstTexts = new List<string>();

    public void AddText(string str)
    {
        m_lstTexts.Add(str);
    }
}

答案 1 :(得分:0)

如果我正确理解了问题(如果你想以编程方式保留最后5个剪贴板项目),你可以做类似的事情:

    const int MaxItems = 5;
    static readonly List<string> ClipboardData = new List<string>();

    public static void SaveClipboard()
    {
        ClipboardData.Add(Clipboard.GetText());
        if (ClipboardData.Count > MaxItems) ClipboardData.RemoveAt(0);
    }

    // You don't need lines later, I show them just as example
    [STAThreadAttribute]
    static void Main()
    {
        for (int i = 0; i < 10; i++)
        {
            Clipboard.SetText(i.ToString());
            SaveClipboard();
        }

        foreach (var s in ClipboardData)
        {
            Console.WriteLine(s);
        }

        Console.ReadLine();
    }

如果您需要@KMan方式,请同时检查此问题:C#/WPF Can I Store more that 1 type in Clipboard?


因此,您必须在每次剪贴板修改后调用SaveClipboard()。所有数据都将收集在ClipboardData