Откройте существующую форму из основной формы
Я разработал две формы: Form1
а также Form2
, Form1
это основная форма. Есть кнопка в Form1
, если я нажму кнопку, то Form2
выскочит. Я хочу сделать что-то на Form2
,
// click button in Form1.
private void button1_Click(object sender, EventArgs e)
{
Form form2= new Form();
form2.ShowDialog();
}
Но Form2
это новая форма, а не существующая форма.
Это неверно.
Как? Благодарю.
5 ответов
Вы создаете экземпляр класса Form, а не Form2, который есть в вашем проекте. Создайте экземпляр Form2, который вы создали ранее, и затем вызовите в нем ShowDialog.
Вы могли заметить в файле program.cs что-то вроде Application.Run(new Form1()); Здесь мы создаем экземпляр Form1 и переходим к методу Run.
Сделайте это таким образом, создав экземпляр Form2 и вызвав метод ShowDialog(), чтобы показать его
Form2 form2= new Form2();
form2.ShowDialog();
private void button1_Click(object sender, EventArgs e)
{
InputForm form1 = new InputForm();
form1.Show();
}
Здесь InputForm означает, какую форму вы хотите открыть.
Вы создаете пустую форму с
Form Form2= new Form();
Вы должны использовать
Form2 form2= new Form2();
Полный код:
private void button1_Click(object sender, EventArgs e)
{
Form2 form2= new Form2();
form2.ShowDialog();
}
Вопрос "Откройте существующую форму из основной формы"
Хорошо, давайте немного изменим его. Откройте существующий экземпляр формы из основной формы.
когда вы показываете форму
new Form2().Show();
допустим, вы спрятали его, используя
Form2.Hide();
вы, ребята, можете использовать это
var Form2_instance = Application.OpenForms.OfType<Form2>().Single();
Form2_instance.Show();
Декларировать
Form2 form2= new Form2();
как ваш ученик и использовать его так:
private void button1_Click(object sender, EventArgs e)
{
form2.ShowDialog(); //blocking call
//or form2.Show() //non blocking call
}
РЕДАКТИРОВАТЬ
Основываясь на правильных комментариях, чтобы сделать эту работу вместо выполнения Close()
на функции, которая приведет к Dispose()
вам нужно использовать form2.Hide()
сделать просто невидимым