Обычно я подхожу к этому требованию следующим образом:
Я размещаю публичное свойство в классе Form2:
public string ValueFromForm1 { get; set; }
//In the constructor, or other relevant method, I use the value
public Form2()
{
form2LabelToDisplayForm1Value.Text = ValueFromForm1;
}
Чтобы вернуть что-то в Form1, вам нужнодобавить открытое свойство в класс Form1 для получения значения, а затем отправить ссылку на форму в Form2, чтобы Form2 могла установить значение:
//Add reference property to Form2 class
public Form1 CallingForm { get; set; }
//Form2 can access the value on Form1 as follows:
private someMethod()
{
this.CallingForm.ValueFromForm2 = "Info coming from form 2";
}
затем
//Add public property to Form1 class
public string ValueFromForm2 { get; set; }
//When Form2 is created, set the reference property
Form2 objForm2 = new Form2();
objForm2.CallingForm = this;
objForm2.Show();
Поскольку у Form2 теперь есть ссылка на созданную Form1, нет необходимости вызывать new Form1 () где-либо в Form2.Все, что нужно сделать в Form2 - установить значение для ссылки, а затем закрыть себя.