Возможно, это имеет некоторое отношение к нему являющийся mainForm, но я задам вопрос. У меня есть свой mainForm, который является первым для загрузки, когда программа загружается.
Я затем нажимаю кнопку под названием, Добавляют, который должен открыть новую форму, и закрывать mainForm.
Проблема, является шоу новая форма в течение доли секунды, затем закрывает обоих.
Код:
private void addFrmBtn_Click(object sender, EventArgs e)
{
saveForm saveform = new saveForm();
saveform.Show();
this.Close();
}
В вашем методе Program.Main ()
у вас, вероятно, есть что-то вроде этого:
class Program
{
void Main()
{
Application.Run(new MainForm());
}
}
Это означает, что цикл сообщений вашего приложения выполняется вокруг основной формы. Как только он закрывается, основной поток пользовательского интерфейса приложения отправляется вместе с ним.
Вы можете либо:
Program.Main ()
, чтобы этого не происходило (имеется перегрузок в Application.Run ()
. MainForm
, а не закрывать его. Вот как выберите вариант 3:
private void addFrmBtn_Click(object sender, EventArgs e)
{
saveForm saveform = new saveForm();
saveform.Show();
this.Hide();
}
Проблема заключается в том, что вы закрываете родительскую форму, которая открыла дочернюю форму. Чтобы сохранить форму, используйте this.Hide () ; вместо того, чтобы закрыть.
Я думаю, вы показываете основную форму с:
Application.Run (new MainForm ());
Это код по умолчанию, сгенерированный Visual Studio, и его поведение может быть неожиданным:
This method adds an event handler to the mainForm parameter
for the Closed event. The event handler calls ExitThread to
clean up the application.
http://msdn.microsoft.com/en-us/library/ms157902 .aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.run.aspx
Либо не передавайте форму в Application.Run (), либо используйте .Hide () вместо .Close ().
Я полагаю, когда основная форма закрывается, ваше приложение завершается. Измените свой код на этот:
private void addFrmBtn_Click(object sender, EventArgs e)
{
saveForm saveform = new saveForm();
saveform.Show();
this.Hide();
}
в свойствах проекта, в режиме выключения, выберите «При закрытии последней формы»
извините, этот параметр, похоже, работает только в проекте Visual Basic