2016-01-15 3 views
1

Итак, скажем, я нажал кнопку, и она должна открыть новую форму и закрыть текущую форму.Как закрыть форму после открытия другой формы

private void button1_Click(object sender, EventArgs e) 
{ 
    this.Close(); 
    Form2 AFormInstance = new Form2(); 
    AFormInstance.Show(); 
} 

Я попытался this.Close() но то, что в конечном итоге происходит был закрыт обе формы. Как открыть Form2 и закрыть Form1?

+0

Вы пробовали это.Close(); после того, как вы создаете новую форму и показываете ее? – ProgrammingDude

+0

Да, я попытался разместить вызов 'this.Close()' после того, как я создал новую форму. Он все еще закрыл оба. – puretppc

+0

http://stackoverflow.com/a/10769349/17034 –

ответ

-2

Просто включите несколько строк:

private void button1_Click(object sender, EventArgs e) 
{ 
    Form2 AFormInstance = new Form2(); 
    AFormInstance.Show(); 
    this.Close(); 
} 

Edit: О дальнейшей мысли: не случайно закрытия вашей основной формы?

Изменить код по умолчанию Program.cs на:

static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Form1 form1 = new Form1(); 
     form1.Show(); 
     Application.Run(); 
    } 

Чтобы закрыть использование приложения:

Application.Exit(); 
+0

это не относится к текущему экземпляру, поэтому закрытие AFormInstance? –

+0

Нет. Обработчик событий находится на Form1, поэтому он закрывает экземпляр form1 –

0

Если родитель Button1 является Form1 вы можете использовать:

var formToBeClosed = ((sender as Button).Parent) as Form; 
formToBeClosed.Close(); 
Смежные вопросы