所以我创建了一个变量来保存我的剪贴板文本,我不知道如何将它附加到列表框中。
就我而言......
private void clipboardBtn_Click(object sender, EventArgs e)
{
string items = Clipboard.GetText();
List<string> _items = new List<string>();
_items.AddRange(items);
}
但是这引起了我的错误..
参数1:无法转换为&#39; string&#39;至 &#39; System.Collections.Generic.IEnumerable&#39;
造成这种情况的原因以及如何解决?这甚至是将文本附加到列表框的正确方法吗?
-UPDATE -
我现在得到了这个,但每次点击按钮都会覆盖旧按钮,而不是将新项目附加到列表框
string items = Clipboard.GetText();
List<string> _items = new List<string>();
_items.Add(items);
listBox1.DataSource =_items;
如何追加新项?
答案 0 :(得分:1)
public static string GetText()
但List<T>.AddRange
有签名
public void AddRange( IEnumerable<T> collection )
所以基本上你试图将string
添加为IEnumerable<T>
,这会给你上述错误。
为此目的更好地使用List<T>.Add
:
_items.Add(items);
答案 1 :(得分:0)
您的问题是List
对象,而不是ListBox
控件。
AddRange()
方法需要集合,您可以使用Split
将字符串转换为集合(数组)。
private void clipboardBtn_Click(object sender, EventArgs e)
{
string YourGetClipBoardTextString = "aaa;bbb;ccc;ddd";
List<string> _items = new List<string>();
_items.AddRange(YourGetClipBoardTextString.Split(';').ToArray()); // you can split the string by any char seperator ";" " ", "," etc...
}
如果您不需要拆分字符串,只需使用Add()方法:
_items.Add(YourGetClipBoardTextString);
更新后,您可以通过这种方式将新项目附加到列表框中:
foreach (string itm in _items)
{
listBox1.Items.Add(itm);
}
答案 2 :(得分:0)
因为您在每次点击时都会创建新的“_items”,所以您无法看到旧项目。试试这个,
List<string> _items = new List<string>();
private void clipboardBtn_Click(object sender, EventArgs e)
{
string items = Clipboard.GetText();
_items.Add(items);
listBox1.DataSource =_items;
}
_items在方法范围之外声明。
答案 3 :(得分:0)
首先,您需要将剪贴板内容拆分为每行的字符串,然后您需要将它们添加到列表框中:
string[] items = Clipboard.GetText().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
listBox1.Items.AddRange(items);
如果您不希望每行都有单独的listBox项,请执行以下操作:
listBox1.Items.Add(Clipboard.GetText());
答案 4 :(得分:0)
您的问题是您每次都在初始化新列表:
string items = Clipboard.GetText();
List<string> _items = new List<string>();//<New list here results in removal of existing item
_items.Add(items);
listBox1.DataSource =_items;
尝试这样的事情:
string items = Clipboard.GetText();
List<string> _items = listBox1.DataSource as List<string>;// You may have type casting issues here -
_items.Add(items);
listBox1.DataSource =_items;