0

2 つのリストの内容を 1 つのテキスト ボックスに並べて表示したいと考えています。

問題は、2 つ目が最初のものの下に表示されることです。

以下で、赤色の内容は、Seq 列の数字 50 の下ではなく、maxlen 列の下にある必要があります。

ここに画像の説明を入力

  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

したがって、現在、TextBox余分な空白を削除しています。に設定する必要がありxml:space="preserve"ますTextBox

実際には、2 つTextBoxesまたは 1 つを使用し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

編集:私は答えが速すぎて、最初は完全に間違っていました!

両方のリストをループして、値があるかどうかを確認し、(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;
        }

編集: 2 番目の「if」のタイプミスは、MaxLen ではなく SeqIrregularities にする必要があります

于 2013-11-13T20:33:43.397 に答える