我有對象類型的列表,像這樣:List <Sentence> sentences = new List<Sentence>();
轉換列表轉換成字符串顯示在列表框中
和列表包含我要顯示在列表框中各種串/句子,但是,每次我嘗試顯示列表,在列表框中顯示(集合)
我有什麼:listBox1.Items.Add(sentences);
有沒有辦法到對象轉換爲字符串,以便在列表中的文本/句話是在列表框可讀?
句子結構的內容只是一個字符串變量。
我有對象類型的列表,像這樣:List <Sentence> sentences = new List<Sentence>();
轉換列表轉換成字符串顯示在列表框中
和列表包含我要顯示在列表框中各種串/句子,但是,每次我嘗試顯示列表,在列表框中顯示(集合)
我有什麼:listBox1.Items.Add(sentences);
有沒有辦法到對象轉換爲字符串,以便在列表中的文本/句話是在列表框可讀?
句子結構的內容只是一個字符串變量。
您正在看到一個字符串。具體而言,您會看到該對象的.toString()。
您想要傳遞集合的內容 - 請嘗試.AddRange()。
如果你希望顯示代表性的列表框中Sentence
實例的東西,覆蓋ToString()
public class Sentence
{
public override string ToString()
{
//return something meaningful here.
}
// Rest of the implementation of Sentence
}
您必須覆蓋ToString
:
public class Sentence
{
public string Text{ get; set; }
public override string ToString()
{
return this.Text;
}
}
注意Formatting
應禁用:
listBox1.FormattingEnabled = false;
如提到here。
另一種方法是使用LINQ和AddRange
:
listBox1.Items.AddRange(sentences.Select(s => s.Text).ToArray());
(假設你的Sentence
類有一個屬性Text
)
您要添加的集合項目本身(即sentences
)到ListBox控制。 您將需要覆蓋Sentence
-class中的ToString()
-method以返回句子的文本值。然後使用foreach循環和你的句子添加到列表框,如:
foreach(Sentence sen in sentences){
ListBox1.Items.Add(sen.ToString());
}
似乎要添加語句列表到列表框中。我不確定你的期望會發生什麼......我的猜測是你正試圖將列表中的每個句子添加到列表框中,因此你應該使用AddRange選項,如其他答案中所述。 總而言之,如果您確實使用AddRange,則可以使用列表框的「DisplayMember」屬性來顯示在Sentence類中持有Text的屬性。
private void Form1_Load(object sender, EventArgs e)
{
listBox1.DisplayMember = "Text";
listBox1.Items.Add(new Sentence { Text = "abc" });
listBox1.Items.Add(new Sentence { Text = "abc1" });
listBox1.Items.Add(new Sentence { Text = "abc2" });
}
public class Sentence
{
public string Text { get; set; }
}
顯示'Sentence'類結構。 – MarcinJuraszek 2013-03-17 21:15:41
可能[ListControl.DisplayMember屬性](http://msdn.microsoft.com/en-GB/library/system.windows.forms.listcontrol.displaymember.aspx)有幫助嗎? – 2013-03-17 21:16:32