2015-03-29 5 views
1

У меня есть две формы: form1 и form2. В форме1 есть кнопка, которая при нажатии открывается на экран формы2 поверх формы1. form2 меньше, чем form1 (специально). Если событие click инициировано, а form2 открыто, пользователь нажимает на form1, form2 падает на задний план, как это делают большинство программ в окнах.Как мне закрыть форму, когда она теряет фокус?

Что я хочу: это когда форма2 открыта, и пользователь нажимает на что-то другое, form2 закрывается.

Я пробовал (на form2):

private void formLostFocus (object sender, System.EventArgs e) 
{ 
    this.Close(); 
} 
+0

Как вы открываете вторую форму? Передайте владельцу вторую форму. – Steve

ответ

3

Попробуйте, пожалуйста, этот код

private void Form2_Deactivate(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

И подписаться на Deacticate событие

this.Deactivate += new System.EventHandler(this.Form2_Deactivate); 
+0

Спасибо за помощь. – Newbie190

0

Используйте этот код:

Это событие, которое л открыт form2

private void button1_Click(object sender, EventArgs e) 
     { 
      Test.Form2 frm = new Test.Form2(); 
      frm.TopMost = true; 
      frm.Show(); 
     } 

Используйте Деактивировать в form2, который будет закрыть форму, когда и щелкните вне формы и убедитесь, что использовать TopMost = истина; при открытии формы.

private void Form2_Deactivate(object sender, EventArgs e) 
{ 
    this.Close(); 
} 
Смежные вопросы