2011-04-19 8 views
22

У меня есть Form1 и Form2 в моем проекте. Form2 - это просто форма с настройками для Form1. Что такое команда, чтобы открыть Form2 из Form1, а также какая команда закрыть его, пожалуйста?Как открыть вторую форму?

ответ

37

Вам необходимо обработать событие на Form1, которое создается в результате взаимодействия пользователя. Например, если у вас есть кнопка «Настройка», что пользователь щелкает для того, чтобы показать форму настроек (Form2), вы должны обрабатывать Click события для этой кнопки:

private void settingsButton_Click(Object sender, EventArgs e) 
{ 
    // Create a new instance of the Form2 class 
    Form2 settingsForm = new Form2(); 

    // Show the settings form 
    settingsForm.Show(); 
} 

В дополнении к Show method, вам может также выбрать использование ShowDialog method. Разница в том, что последний показывает форму как модальный диалог , что означает, что пользователь не может взаимодействовать с другими формами в вашем приложении до тех пор, пока они не закрывают модальную форму. Это то же самое, что и окно сообщения. Метод ShowDialog также возвращает значение, указывающее, как форма была закрыта.


Когда пользователь закрывает форму настроек (нажав кнопку «X» в строке заголовка, например), Windows автоматически позаботится о закрытии.

Если вы хотите, чтобы закрыть его самостоятельно, прежде чем пользователь просит, чтобы закрыть его, вы можете вызвать форму-х Close method:

this.Close(); 
+0

все остальные ответы Я посмотрел, вернул ошибку! Просто ваш ответ здесь сработал. Спасибо. <3 –

2

В любом случае клик (или другой):

Form2 frm2 = new Form2(); 
frm2.Show(); 
1

Если вам нужно показать Form2 как modal dialog изнутри Form1 сделать:

var form2 = new Form2(); 
if (form2.ShowDialog() == DialogResult.OK) 
{ 
    // process results here 
} 

модальный диалог сохранит фокус, Открыто; он установит родительские окна (Form1) «в фоновом режиме», пока он не будет закрыт, что является довольно распространенной практикой для окон настроек.

4

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

Для отображения вашей формы используйте Показать() метод:

Form form2 = new Form(); 
form2.Show(); 

закрыть использовать форму Close():

form2.Close(); 
+0

ОК спасибо, он работает хорошо ... и если я устанавливаю что-то в форме2, как int a .... и я хочу, чтобы основная форма1 после закрытия формы2 знала, что есть в INT a? – Nasgharet

0

Начать с этого:

var dlg = new Form2(); 
dlg.ShowDialog(); 
7
//To open the form 

Form2 form2 = new Form2(); 

form2.Show(); 
// And to close 
form2.Close(); 

Надеется, что это помогает

+0

ОК, спасибо, хорошо работает ... и если я что-то установил в форме2, как int .... и я хочу, чтобы основная форма1 после закрытия формы2 знала, что есть в INT a? – Nasgharet

+0

Ну, так как у вас есть экземпляр Form2 в вашей основной форме, у вас всегда может быть свойство для доступа к этой переменной int. Просто убедитесь, что вы сохранили это значение int перед тем, как закрыть форму :) – cush

5

Если вы хотите открыть Form2 модально (т.е. вы не можете нажать на Form1 в то время как Form2 открыт), вы можете сделать это:

using (Form2 f2 = new Form2()) 
{ 
    f2.ShowDialog(this); 
} 

Если вы хотите открыть Form2 немодуально (это означает, что вы все равно можете нажать Form1, пока Form2 открыт), вы можете создать ссылку на уровне формы для формы 2 следующим образом:

private Form2 _f2; 

public void openForm2() 
{ 
    _f2 = new Form2(); 
    _f2.Show(this); // the "this" is important, as this will keep Form2 open above 
        // Form1. 
} 

public void closeForm2() 
{ 
    _f2.Close(); 
    _f2.Dispose(); 
} 
2

В одной строке было бы:

(new Form2()).Show(); 

Надеется, что это помогает.

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