如何使列表内容在文本框中并排显示

时间:2013-11-13 20:31:52

标签: c# wpf

我想在一个文本框中并排显示两个列表的内容。

问题是第二个出现在第一个下面。

下面,红色内容应位于maxlen列下,而不是Seq列中的数字50下。

enter image description here

  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);
                  }
          }

4 个答案:

答案 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

但实际上,我会使用两个TextBoxesItemsControl

答案 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";
       }

这样,即使其他条目为空,也应调整每个条目。