2

I have two classes(forms), and I would like an item from class2 to be added to listBox in class1 when I click "Accept" button.

I tried with the following code, but nothing changes in the listBox:

private void button1_Click(object sender, EventArgs e)
{
    CarRental i = new CarRental();
    string id = idRental.Text.ToString();

    i.listBox1.Items.Add(id);
    i.listBox1.Update();
    this.Close();
}

Where did I make the mistake?

akjoshi
  • 15,374
  • 13
  • 103
  • 121
cvenko
  • 131
  • 1
  • 4
  • 13

3 Answers3

2

Declare RentalId property on Form2. And at CarRental form (your first form) do following:

using(Form2 form2 = new Form2())
{
    if (fomr2.ShowDialog() != DialogResult.OK)
        return;

    listBox.Items.Add(form2.RentalId);
}

Implement Fomr2.RentalId property this way:

public string RentalId
{
   get { return idRental.Text; } // you don't need ToString() call
}

Then select your "Accept" button and set its DialogResult property to OK. Thus clicking on that button will close your dialog form and return DialogResult.OK.

Sergey Berezovskiy
  • 232,247
  • 41
  • 429
  • 459
0

you created a new entity of type CarRental. what you should do is to send the first form to the second on construct, and modify things through that instance.

elyashiv
  • 3,623
  • 2
  • 29
  • 52
0

You need to access the open form instead of creating new instance of CarRental form

private void button1_Click(object sender, EventArgs e)
{
    CarRental i = (CarRental)Application.OpenForms["CarRentalFormObjectName"];
    string id = idRental.Text.ToString();

    i.listBox1.Items.Add(id);
    i.listBox1.Update();
    this.Close();
}
Adil
  • 146,340
  • 25
  • 209
  • 204