2010-04-19 2 views
4

Возможно, это связано с тем, что она является основной формой, но я задам вопрос. У меня есть мой mainForm, который загружается первым при загрузке программы.Форма не показана

Затем я нажимаю кнопку «Добавить», которая должна открыть новую форму и закрыть mainForm.

Проблема заключается в том, что она отображает новую форму в течение секунды, а затем закрывает оба.

Код:

private void addFrmBtn_Click(object sender, EventArgs e) 
    { 
     saveForm saveform = new saveForm(); 
     saveform.Show(); 
     this.Close(); 
    } 

ответ

5

В вашем методе Program.Main(), вы, вероятно, что-то вроде этого:

class Program 
{ 
    void Main() 
    { 
     Application.Run(new MainForm()); 
    } 
} 

Это означает, что цикл обработки сообщений вашего приложения работает вокруг главной формы. Как только это закрывается, основной поток пользовательского интерфейса приложения идет вместе с ним.

Вы можете:

Вот как вы делаете вариант 3:

private void addFrmBtn_Click(object sender, EventArgs e) 
{ 
    saveForm saveform = new saveForm(); 
    saveform.Show(); 
    this.Hide(); 
} 
1

Проблема, кажется, это вы закрываете родительскую форму, которая открыла дочернюю форму. Чтобы сохранить форму, используйте this.Hide(); а не закрывать.

1

Я предполагаю, что когда основная форма закрыта, она прекращает ваше приложение. Измените код следующим образом:

private void addFrmBtn_Click(object sender, EventArgs e) 
    { 
     saveForm saveform = new saveForm(); 
     saveform.Show(); 
     this.Hide(); 
    } 
0

в свойствах проекта, режим отключения, пойдите выберите «Когда Последняя форма Замыкает»

К сожалению, этот вариант, кажется, только работы по проекту Visual Basic

+0

Я пошел к свойствам, какая часть этого под? – sark9012

+0

ha забыть, этот вариант, похоже, работает только под визуальным базовым проектом – Fredou

0

Я предполагаю, что вы показываете главную форму с:

Application.Run (новый MainForm());

Это код по умолчанию генерируется визуальной студии, и у него есть, возможно неожиданное поведение:

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().

Смежные вопросы