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