2012-07-14 61 views
0

對於Windows窗體,以下工作正常。當消息框關閉並用作代理時捕獲事件

它只是使用一個委託時孩子形式被關閉形式重新激活GroupBorder。

private void uxUpdateDataButton_Click(object sender, EventArgs e) 
    { 
     uxRevisionHelperGroupBox.Enabled = false; 
     uxBindingNavigator.Hide(); 
     uxFormDatabase myNewDisplay = new uxFormDatabase(); 
     myNewDisplay.FormClosed += delegate { activateGroupBorder(); }; 
     myNewDisplay.Show();  
    } 

    public void activateGroupBorder() 
    { 
     uxRevisionHelperGroupBox.Enabled = true; 
     uxBindingNavigator.Show(); 
    } 

是否有可能做到與上述等效,但對於一個消息框而不是子窗體?

這是我的嘗試是不是解決辦法:

private void uxAuthorPictureBox_Click(object sender, EventArgs e) 
    { 
     uxRevisionHelperGroupBox.Enabled = false; 
     uxBindingNavigator.Hide(); 
     MessageBox myMessage = new MessageBox; 
     myMessage.close += delegate { activateGroupBorder(); }; 
     myMessage.Show("hello world"); 
    } 
    public void activateGroupBorder() 
    { 
     uxRevisionHelperGroupBox.Enabled = true; 
     uxBindingNavigator.Show(); 
    }  
+1

'MessageBox.Show(...)'是同步調用,即執行不會繼續,直到盒子關閉。爲什麼不能在消息框完成後調用activateGroupBorder()? 'myMessage.Show(「hello world」); this.activateGroupBorder();' – loopedcode 2012-07-14 21:22:05

+0

+1酷 - 謝謝。你爲什麼不把它作爲解決方案? – whytheq 2012-07-14 21:48:34

+0

添加爲答案。 – loopedcode 2012-07-14 21:50:56

回答

0

MessageBox.Show(...)是同步調用,即執行不會再繼續下去,直到對話框關閉。爲什麼你不能在消息框完成後打電話給你的activateGroupBorder()?例如:

MessageBox.Show("hello world"); 
this.activateGroupBorder();