system.StackOverflowException: "Выдано исключение типа "System.StackOverflowException"." c#
У меня есть Form1 в которой я создаю Form2
public partial class Form1 : Form
{
Form2 form2 = new Form2();
, затем в Form2 я создаю Form3
public partial class Form2 : Form
{
Form3 form3 = new Form3();
и в форме Form3 мне нужно обратиться к объекту на Form1. Если я в Form3 создам Form1 то уйду в рекурсию. Как обратиться из Form3 к Form1 не создавая Form1, а обратиться к уже существующей?
Ответы (1 шт):
new Form1 не позволит вам ни к чему обратиться, а создаст новую копию формы и будет у вас 2 Form1, в свою очередь 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, 1 форма создаст 2, 2 создаст 3, 3 создаст 1, StackOverflowException
Для главной формы можно например так
private Form1 mainForm;
private void Form3_Load(object sender, EventArgs e)
{
mainForm = Application.OpenForms.OfType<Form1>().First();
}
Чтобы создать обоаботчик Load, надо в дизайнере ткнуть по пустому месту на форме двойным кликом.