2011-06-22 76 views
0

我有一個關閉事件的子窗口,以防止意外關閉。在這個子窗口中,我有一個按鈕點擊處理程序,它將執行操作,然後關閉子窗口並向父窗口報告新信息。不幸的是,這個按鈕操作也會調用關閉事件。我怎樣才能繞過這個特定的窗口關閉事件,只是報告說的信息?從按鈕繞過窗口關閉事件點擊

我剛剛讀完,似乎有點混亂。如果需要,我會編輯。

+0

看來有很多不同的解決方案來解決這個問題,我幾乎只是實現了我看到的第一個工作。感謝大家。 – ecMode

回答

2

如果我理解你的話,你可以在OnClosing Cancel -property設置爲true,因此窗口不會關閉。現在,您可以通過按鈕點擊事件來關閉窗口,儘管您有此OnClosing事件。對?
可能性是定義您在按鈕事件中設置的成員變量。在OnClosing中,如果未設置此成員變量,則只會將e.Cancel設置爲true。

class YourClass{ 
    bool m_closeAnyway; 
    void OnClosing(....){ 
     if(!m_closeAnyway){ 
      e.Cancel=true; 
     } 
    } 
    void ButtonClickEventHandler(...){ 
     m_closeAnyway=true; 
     Close(); 
     DoTheRest(); 
    } 
1

你應該檢查你的設計。

你可以做這樣的事情:

public void ClosingEvent (...) 
{ 
    if(this.ToValidate) 
    { 
     this.Validate(); 
     // Or e.Cancel; I don't know exactly know what you want to prevent... 
    } 
} 

public void ButtonClick(...) 
{ 
    this.ToValidate = false; 
    this.Close(); 
} 
1

有像ForceClosed屬性默認爲真,並點擊按鈕設置爲是假的。關閉事件觸發時,請檢查ForceClosed是否爲真。如果是這樣,然後執行任何所需的措施來防止意外關閉。