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

C# 我们可以将剪贴板文本复制到数组中吗,c#,clipboard,C#,Clipboard,我试图制作一个包含5个元素的数组列表,其中复制了最近的5个剪贴板文本 但我不能每次剪贴板文本覆盖前一个和第一个数组元素时都这样做 只打印最后一个我想打印的所有内容我怎么能这样做 如果我的情况可能的话,请给我一些解决方案怎么样:您在读/写时管理一个自定义对象。例如,MyCustomClipboardClass 每次你要移动剪贴板上的数据时 获取您的MyCustomClipboardClass对象 将文本添加到其中 将该对象保存到剪贴板 见下文: [Serializable] class MyC

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

但我不能每次剪贴板文本覆盖前一个和第一个数组元素时都这样做

只打印最后一个我想打印的所有内容我怎么能这样做


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

怎么样:您在读/写时管理一个自定义对象。例如,
MyCustomClipboardClass

每次你要移动剪贴板上的数据时

  • 获取您的
    MyCustomClipboardClass
    对象
  • 将文本添加到其中
  • 将该对象保存到剪贴板
见下文:

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

    public void AddText(string str)
    {
        m_lstTexts.Add(str);
    }
}
[可序列化]
类MyCustomClipboardClass
{
List m_lstText=新列表();
公共void AddText(字符串str)
{
MlstText.Add(str);
}
}

如果我正确理解了问题,您可以这样做(如果您希望以编程方式保留最后5个剪贴板项目):

const int MaxItems=5;
静态只读列表剪贴板数据=新列表();
公共静态void SaveClipboard()
{
ClipboardData.Add(Clipboard.GetText());
如果(ClipboardData.Count>MaxItems)ClipboardData.RemoveAt(0);
}
//稍后不需要行,我将它们作为示例显示
[属性]
静态void Main()
{
对于(int i=0;i<10;i++)
{
Clipboard.SetText(i.ToString());
保存剪贴板();
}
foreach(剪贴簿数据中的var s)
{
控制台。写入线(s);
}
Console.ReadLine();
}
如果您需要@KMan-way,请同时检查此问题:



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

您可以显示代码而不是问题描述吗?您是否尝试过使用String.Join(“,”,myArray)-1,因为nobdy可以猜测您的代码是如何工作的。在发布.console应用程序之前请仔细考虑。显示剪贴板未找到的错误。为此,我必须包括使用System.Windows.Forms;在控制台应用程序中。programReference手动(通过右键单击References->AddReference)System.Windows.Forms,这会有所帮助。在WinForms中,您不需要我的主方法,它只是演示如何尝试使用SaveClipboard()和列出内容..hii。。。我添加引用程序运行成功,但它在新行中显示输出56789,但我希望它将显示剪贴板中的所有复制数据:(:(:)那么,您到底想要什么?您需要监视剪贴板数据并从任何(包括外部)收集数据吗剪贴板修改?或者您是否需要通过编程方式收集您自己的程序将添加的数据?通过我调用的
clipboard.SetText()
作为示例,您将获得5..6..7..8..并修改剪贴板。请务必阅读
clipboard
类详细信息。
    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();
    }