2012-03-12 8 views
1

У меня две формы: One и Two, а текст заголовка обоих этих же имен.Модальные диалоговые окна моделирования

One оказывает кнопку и событие щелчка содержит,

Two l_objTwo = new Two(); 
l_objTwo.Show();    
MessageBox.Show("Two Closed"); 

Он открывает Two и после того, что «два закрытых» сообщение будет выскочило.

Мой scenerio в том, что Two должен быть открыт в Modeless образом мне нужно то есть контроль над One и в то же время мне нужно выполнить некоторые функции после Two был закрыт. На данный момент я использую как,

[DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)] 
public static extern IntPtr FindWindow(String sClassName, String sAppName); 

Two l_objTwo = new Two(); 
l_objTwo.Show(); 
IntPtr l_objHandle = FindWindow(null, "Two"); 
while ((int)l_objHandle > 0) 
{ 
    l_objHandle = FindWindow(null, "Two"); 
    Application.DoEvents(); 
} 
MessageBox.Show("Two Closed"); 

Его работа прекрасна, но это единственный способ достичь этого?

+0

@svick & @ Jodrell: Спасибо ........... –

ответ

1

Нет, это не единственный способ. Ваша первая форма добавит обработчик либо FormClosed, либо FormClosing общественные мероприятия второй формы.

Когда ваша вторая форма закрывается, она поднимет событие, и первая форма будет знать, что ваша вторая форма закрыта.

Просто используйте этот фрагмент:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 f = new Form2(); 
     f.FormClosed += new FormClosedEventHandler(FormClosedHandler); 
     f.Show(); 
    } 
    void FormClosedHandler(object sender, FormClosedEventArgs e) 
    { 
     MessageBox.Show("Second form has closed."); 
    } 
0

Это выглядит все вокруг грязно. Не уверен, чего вы хотите достичь здесь. Просто откройте форму два в обработчике события One и подключите два onclose-события к вашему MessageBox.

1

Используйте обработчик событий

var two = new Two(); 
two.Closed += OnTwoClosed; 
two.Show(); 

private void OnTwoClosed(object sender, EventArgs e) 
{ 
    MessageBox.Show("Two Closed") 
} 

не проверял этот код на WinForms Form, но главным является то же самое, и проще, чем с помощью Windows API, со всеми присущими ему ловушками.

Другим преимуществом является то, что названия окон могут быть любыми, как вам нравится.

After checking here представляется как Closed, так и FormClosed действительными событиями.

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