将带有List的字符串添加到多行文本框中

时间:2016-05-09 13:05:26

标签: c# asp.net winforms visual-studio

我尝试使用此代码在list中添加stringtextbox

ilaninfotextbox.Text = string.Join(Environment.NewLine, ilantextinner, combinelist);

ilantextinnerstring并在文本框中正确显示

ilantextinnerList<string>,其中有20行

但是ilantextinner列表在文本框中显示如下:

System.Collections.Generic.List`1[System.String]

如何在文本框中显示ilantextinner的内容?

注意:如果仅使用ilantextinner,则会正确显示内容。

3 个答案:

答案 0 :(得分:1)

首先,您需要加入列表,使其成为单个字符串:

string joinedList = string.Join(Environment.NewLine, combinelist);

然后将此字符串加入TextBox字符串:

ilaninfotextbox.Text = string.Join(Environment.NewLine, ilantextinner, joinedList);

答案 1 :(得分:1)

Join函数有5次重载。这是使用您的代码调用的那个:

public static String Join(String separator, params object[] values);

它告诉我们什么?

此方法在分隔符后面接收object数组,并且由于它使用的是params关键字,因此该方法实际上会在参数上接收此数据:

new object[] { ilantextinner, combinelist };

该方法将&#34;循环&#34;只能通过values参数中找到的对象调用它ToString()

如何解决?

我会做这样的事情来达到你想要的结果:

combinelist.Insert(0, ilantextinner);
ilaninfotextbox.Text = string.Join(Environment.NewLine, combinelist);

第一行将ilantextinner添加到列表的开头,因此您只需使用期望Join的{​​{1}}重载。

有关IEnumerable<string>关键字的更多信息,请参阅此链接:https://msdn.microsoft.com/en-us/library/w5zay9db.aspx

答案 2 :(得分:0)

您想使用

string.join(string sepeator,params string[] value);

但是因为你没有将List To Array转换为字符串,编译器认为你会使用

string.join(string sepeator,params object[] value);

因此将List转换为字符串数组

ilaninfotextbox.Text = string.Join(Environment.NewLine, String.Join(' ', lantextinner.ToArray()), combinelist);