我想在一个文本框中并排显示两个列表的内容。
问题是第二个出现在第一个下面。
下面,红色内容应位于maxlen列下,而不是Seq列中的数字50下。
private void button7_Click(object sender, EventArgs e)
{
textBox1.Text = "Seq MaxLen\r\n";
foreach (object o in MaxLen)
{
textBox1.Text += String.Join(Environment.NewLine, MaxLen);
}
foreach (object a in SeqIrregularities)
{
textBox1.Text += String.Join(Environment.NewLine, SeqIrregularities);
}
}
答案 0 :(得分:1)
编辑:我第一次回答得太快而且完全错了!
你需要循环遍历两个列表,看看你是否有值和应用填充(如Brian建议的那样)来格式化文本
textBox1.Text = "Seq".PadRight(10) + "MaxLen";
for (int i = 0; i < Math.Max(MaxLen.Count, SeqIrregularities.Count); i++)
{
textBox1.Text += Environment.NewLine;
string text = String.Empty;
if (i < MaxLen.Count)
{
text = MaxLen[i].ToString();
}
text = text.PadRight(10);
if (i < SeqIrregularities.Count)
{
text += SeqIrregularities[i];
}
textBox1.Text += text;
}
编辑:第二个“if”中的拼写错误应该是SeqIrregularities而不是MaxLen
答案 1 :(得分:1)
现在,您的TextBox
正在移除额外的空格。您需要在xml:space="preserve"
上设置TextBox
。
但实际上,我会使用两个TextBoxes
或ItemsControl
。
答案 2 :(得分:1)
假设这些列表具有相同的长度(如果不是,它会更复杂):
string result = "Seq MaxLen\r\n";
for (int i = 0; i < MaxLen.Count; i++) {
result += String.Format("{0} {1}\r\n", SeqIrregularities[i].ToString(), MaxLen[i].ToString());
}
textBox1.Text = result;
答案 3 :(得分:1)
看看这是否有帮助:
textBox1.Text = "Seq".PadRight(10) +"\tMaxLen\r\n";
for(int i = 0; i < SeqIrregularities.Count() || i < MaxLen.Count(); i++)
{
string temp = "";
if(i >= SeqIrregularities.Count())
temp = "".PadRight(10) + "\t" + list2[i];
else
if(i >= MaxLen.Count())
temp = SeqIrregularities[i].PadRight(10);
else
temp = SeqIrregularities[i].PadRight(10) + "\t" + MaxLen[i];
textBox1.Text += temp + "\r\n";
}
这样,即使其他条目为空,也应调整每个条目。