У меня есть 3 формы в моем проекте winforms, и все они имеют кнопку, которая запускает один и тот же код открытия Form2. Мне нужно централизовать код, поместив этот код в файл класса внутри того же проекта или поместив его в отдельную библиотеку классов. Прямо сейчас код находится внутри той же формы, что и ниже:
frm1 entryform = (frm1)Application.OpenForms["frm1"];
if (entryform == null)
{
entryform = new frmMainMenu();
}
entryform.StartPosition = FormStartPosition.Manual;
entryform.Location = this.Location;
entryform.Show();
this.close();
Когда я перемещаю этот код из Form1, Form2, Form3 в общую форму, я не могу получить доступ к вызывающей форме, чтобы заменить строку this.close();
Есть ли такое свойство, как Method.CallingForm.Close() или что-то в С#? Пожалуйста помоги
Я не хочу передавать форму как параметр. Форма слишком тяжелая, чтобы ее передать. Любая другая альтернатива?
heavy
вы думаете о своей форме, передать ее тривиально. По сути, вы передаете ссылку на объект. То, что вы ДЕЛАЕТЕ с формой после того, как передадите ее по кругу, может заставить вас думать о ней как о тяжелой. Следуйте совету Хана и измените логику так, чтобы каждая форма отвечала за самозакрытие. - person Raheel Khan   schedule 12.04.2015