0

プログラムの実行中に、フォームにラベルとテキストボックスを動的に追加しています。これらのコンポーネントをスクロールペインに挿入して、追加するラベルやテキストボックスの数に関係なく、フォームに収まるようにするにはどうすればよいですか?

はっきりしているのかわかりませんが、フォームのサイズに制限がなく、好きなだけコンポーネントを追加できるようにしたいのですが、これを行う方法はありますか?

これは今の私のコードです:

public void generateFormDynamically()
{
      textBoxes = new TextBox[noOfPlayers];

      int xLabel = 95;
      int yLabel = 215;

      int xTextBox = 205;
      int yTextBox = 215;

      for (int i = 0; i < noOfPlayers; i++)
      {
           Label label = new Label();
           label.Text = "Player " + (i + 1) + ":";

           if (i == 0) label.Location = new Point(xLabel, yLabel);
           else
           {
               yLabel += 55;
               label.Location = new Point(xLabel, yLabel);
           }

           label.AutoSize = true;
           label.BackColor = System.Drawing.Color.Transparent;
           label.Font = new System.Drawing.Font("Segoe UI Semibold", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
           label.Name = "label" + (i + 2);
           label.Size = new System.Drawing.Size(68, 20);
           label.TabIndex = 6;
           label.Visible = true;
           label.Show();
           this.Controls.Add(label);

           TextBox textBox = new TextBox();

           if (i == 0) textBox.Location = new Point(xTextBox, yTextBox);
           else
           {
                yTextBox += 55;
                textBox.Location = new Point(xTextBox, yTextBox);
           }

           textBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
           textBox.Name = "textBox" + (i + 1);
           textBox.Size = new System.Drawing.Size(245, 20);
           textBox.TabIndex = 1;
           textBox.Text = "Player" + (i + 1);
           textBox.Visible = true;
           textBox.Show();
           textBoxes[i] = textBox;
           this.Controls.Add(textBox);
     }
}

ご協力いただきありがとうございます :)

4

1 に答える 1

1

他の人が言ったように、それを固定フォームに追加してからフォームを調整することはできません。最終的には、フォームが大きくなりすぎます。しかし、あなたができることは次のとおりです。

1)フォームにパネルを追加します。パネルのサイズは固定されています(またはアンカー/ドッキングされています)。2)パネルのAutoScrollをtrueに設定します。3)次にラベル/テキストボックスを追加します。

したがって、追加されたラベル/テキストボックスが多すぎると、スクロールバーが表示されます。

それでも、動的制御の数に制限を設定することをお勧めします。

于 2012-12-28T22:25:12.030 に答える