0

私のプログラムは現在、元のコントロールの下に 1 行のコントロールを追加するように設定されています。ユーザーが好きなだけコントロールの行を追加できるようにするにはどうすればよいですか?

private void surfaceAddButton_Click(object sender, EventArgs e)
    {           
        //Adds new set of controls on button click
        for (int i = 1; i < 2; i++)
        {

            ComboBox surfaceCombo2 = new ComboBox();
            TextBox sideWallsText2 = new TextBox();
            TextBox backWallsText2 = new TextBox();
            TextBox floorText2 = new TextBox();
            Label newLabel = new Label();
            Label newLabel2 = new Label();
            Label newLabel3 = new Label();

            Absorption_Coefficients alpha = new Absorption_Coefficients(); //Adds surfaces to combobox
            List<string> materialslist = alpha.listLoad();
            materialslist.Sort();
            surfaceCombo2.Items.AddRange(materialslist.ToArray());
            surfaceCombo2.DropDownStyle = ComboBoxStyle.DropDownList;

            //Sets locations and sizes of new row of options, then displays them
            surfaceCombo2.Location = new Point(1, 150 * i + 30);               
            sideWallsText2.Location = new Point(393, 153 * i + 30);
            backWallsText2.Location = new Point(561, 153 * i + 30);
            floorText2.Location = new Point(711, 153 * i + 30);
            newLabel.Location = new Point(321, 158 * i + 30);
            newLabel2.Location = new Point(439, 158 * i + 30);
            newLabel3.Location = new Point(609, 158 * i + 30);
            surfaceCombo2.Width = 322;
            sideWallsText2.Width = 43;
            backWallsText2.Width = 43;
            floorText2.Width = 43;
            newLabel.Text = "Side Walls, ft²";
            newLabel2.Width = 120;
            newLabel2.Text = "Back/or Front Walls, ft²";
            newLabel3.Text = "Floor/or Ceiling, ft²";

            this.Controls.Add(surfaceCombo2);
            this.Controls.Add(sideWallsText2);
            this.Controls.Add(backWallsText2);
            this.Controls.Add(floorText2);
            this.Controls.Add(newLabel);
            this.Controls.Add(newLabel2);
            this.Controls.Add(newLabel3);

            this.Size = new Size(769, 209 * i + 30); //Increases form to accomodate new controls
        }
    }

片面だけ追加した形です。ユーザーが +Surface をクリックするたびに新しい行が下に表示されるようにします。

面を 1 つ追加したフォーム

4

2 に答える 2

0

最初のステップは、既存のコードを使用して、行を作成するメソッドを作成することです。理想的には、この手順の一部として、既にあるロジックの多くをカプセル化するカスタム コントロールを作成します。

2 番目のステップは、その新しいメソッドを使用してパラメーターを要求し、numberOfRowsそのパラメーターを使用して、デフォルトで 1 に設定することです。その後、引き続き機能することを確認します。

最後のステップは、ユーザーが入力numberOfRowsしてメソッドに送信するためのメソッドを提供することです。

于 2013-01-28T22:53:58.113 に答える
0
for (int i = 1; i < 2; i++)

for ループの 2 の代わりに、n に置き換えます。ここで、n は、何らかのコントロールから収集された数値になります。

于 2013-01-28T22:53:14.677 に答える