0

I am having trouble figuring out how to handle events for components that are created when I click a button.

I have a class called rows which is used to create a row of components (combo boxes) . I have a button on my form that has an event to create a new rows object. I would like to have events for the newly created combo boxes but I dont know how or where to put them.

Here is my form code:

private void button1_Click(object sender, EventArgs e)
    {
        rowClass row = new rowClass(startingBuildingComboBoxX, startingRoomComboBoxX, startingProblemsTextBoxX, startingNotesTextBoxX, startingY + 30);
        startingY = startingY + 30;
        this.Controls.Add(row.buildingComboBox);
        this.Controls.Add(row.roomComboBox);
        this.Controls.Add(row.problemsTextBox);
        this.Controls.Add(row.notesTextBox);
        button1.Location = new Point(411, buttonY);
        buttonY = buttonY + 30;
        this.Height += 30;




    }

so whenever I push the button it creates a row of components and also moves the button down to the next row.

I would like to add events for those components that were created in that rows object. But how do I do that??

this is my code for that event:

     public void buildingComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {

        this.roomComboBox.Items.Clear();
        if (this.buildingComboBox.SelectedItem.Equals("ATLC"))
        {
            foreach (int x in ATLC)
            {
                this.roomComboBox.Items.Add(x);
            }
        }


    }

I just dont know where it belongs, or how to tell the form to use it etc.

2
Contributors
6
Replies
10
Views
5 Years
Discussion Span
Last Post by javanub123
0

ok so I now under my button event I have this

 row.buildingComboBox.SelectedIndexChanged += new EventHandler(buildingComboBox_SelectedIndexChanged);

and my event code is this:

        private void buildingComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {

      roomComboBox.Items.Clear();
        if (this.buildingComboBox.SelectedItem.Equals("ATLC"))
        {
            foreach (int x in ATLC)
            {
                this.roomComboBox.Items.Add(x);
            }
        }


    }

My problem now is it will not let me reference buildingComboBox or roomComboBox even though they exist on the form after the button is clicked

0

See here. Basically, you subscribe to an event like so:

comboBox.SelectedIndexChanged += comboBox_SelectedIndexChanged;

and you can unsubscribe from an event like so:

comboBox.SelectedIndexChanged -= comboBox_SelectedIndexChanged;
0

The sender parameter gives you the reference to the particular ComboBox that fired the event. For example:

private void buildingComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    ComboBox comboxBox = sender as ComboBox;
    if (comboBox != null)
    {
        ...
    }
}
0

but why cant I reference the variables of my new row object
I havent done much with programming so im sure its a scope issue but I cant figure out why
I need to refernce the variables of the row object from within my event code for

0

i mean i create the new row object when i press the button, and creating the row object is what puts all the new combo boxes on the form, so i should be able to reference those comboBoxes using row.whateverComboBox right???

0

do i need to make it a global variable of sorts in the row class or something??

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.