0

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

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

下面,红色的内容应该在 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);
                  }
          }
4

4 回答 4

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

于 2013-11-13T20:33:43.397 回答
1

所以现在,您TextBox正在删除额外的空格。你需要xml:space="preserve"在你的TextBox.

不过,真的,我会使用两个TextBoxes或一个ItemsControl.

于 2013-11-13T20:38:10.690 回答
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;
于 2013-11-13T20:45:49.110 回答
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";
       }

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

于 2013-11-13T21:41:07.090 回答