问题
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?
回答1:
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
.
回答2:
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.
回答3:
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();
}
来源:https://stackoverflow.com/questions/13439624/c-windows-forms-adding-items-to-listbox-in-different-class