Martin
Martin

Reputation: 25

Array of WinForm Elements

So I do have a WinForm in my Programm, which contains a series of each a ComboBox and two TextBoxs. There are atm 8 Lines, but this will increase to a total of at least 32, therefore I would like to work with an Array or similar. How do I do that?

My current working, method is that a create a new array of TextBoxes/ComboBoxes which I assign the designated Elemt of the WinForm, manually. Therefore I have a list like this:

tbGU[0] = tbGU1;
tbGO[0] = tbGO1;
cbS[0] = cbS1;

Of course, this looks awful and isn't great if it's copied many times. Anyone got a Solution to my Problem?

I need to access the SelectedIndex of the ComboBox and the Text of the TextBoxes. I was hoping that I could avoid having to create all the Elements manually by code.

Upvotes: 1

Views: 1768

Answers (1)

Sweeper
Sweeper

Reputation: 271420

One simple solution is to use the array initializer syntax:

ComboBox[] cbS = new[] { cbS1, cbS2, cbS3 ... };

Another way of doing this would be to get rid of the variables cbS1, cbS2 ... cBSn altogether and create the controls in a for loop.

ComboxBox[] cbS = new ComboBox[32];
// declare the text box arrays here as well
for (int i = 0 ; i < cbS.Length ; i++) {
    cbS[i] = new ComboBox();
    cbS[i].Location = ... // use "i" to help you position the control
    // configure your combo box ...
    this.Controls.Add(cbS[i]);

    // do the same for the text boxes.
}

A third way is to create a custom control:

// name this properly!
public class MyControl: UserControl {
    public ComboBox CbS { get; }
    public TextBox TbGU { get; }
    public TextBox TbGO { get; }

    public MyControl() {
        // create and configure the combo box and text boxes here ...
    }
}

Then you can use a for loop to create lots of MyControls.

Upvotes: 1

Related Questions