簡體   English   中英

將帶有列表的字符串添加到多行文本框

[英]Add string with List to a multiline textbox

我正在嘗試使用此代碼在textbox添加liststring

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

ilantextinner是一個string並在文本框中正確顯示

ilantextinner是一個包含 20 行的List<string>

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

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

如何在文本框中顯示ilantextinner的內容?

注意:如果我只使用ilantextinner內容顯示正確。

首先,您需要加入列表,使其成為單個字符串:

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

然后將此字符串連接到TextBox字符串:

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

Join函數有 5 個重載。 這是使用您的代碼調用的:

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

它告訴我們什么?

此方法在分隔符之后接收一個object數組,並且由於它使用了params關鍵字,因此該方法實際上在values參數上接收了 this:

new object[] { ilantextinner, combinelist };

該方法將僅通過在 values 參數上找到的對象“循環”並調用它的ToString()

如何解決?

我會做類似的事情來達到你想要的結果:

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

第一行將ilantextinner添加到列表的開頭,因此您可以簡單地使用需要IEnumerable<string>Join重載。

有關params關鍵字的更多理解,請參閱此鏈接: https : //msdn.microsoft.com/en-us/library/w5zay9db.aspx

你想用

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

但是因為您沒有將 List 轉換為字符串數組,所以編譯器認為您會使用

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

所以將 List 轉換為字符串數組

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM