我有一個關閉事件的子窗口,以防止意外關閉。在這個子窗口中,我有一個按鈕點擊處理程序,它將執行操作,然後關閉子窗口並向父窗口報告新信息。不幸的是,這個按鈕操作也會調用關閉事件。我怎樣才能繞過這個特定的窗口關閉事件,只是報告說的信息?從按鈕繞過窗口關閉事件點擊
我剛剛讀完,似乎有點混亂。如果需要,我會編輯。
我有一個關閉事件的子窗口,以防止意外關閉。在這個子窗口中,我有一個按鈕點擊處理程序,它將執行操作,然後關閉子窗口並向父窗口報告新信息。不幸的是,這個按鈕操作也會調用關閉事件。我怎樣才能繞過這個特定的窗口關閉事件,只是報告說的信息?從按鈕繞過窗口關閉事件點擊
我剛剛讀完,似乎有點混亂。如果需要,我會編輯。
如果我理解你的話,你可以在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();
}
你應該檢查你的設計。
你可以做這樣的事情:
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();
}
有像ForceClosed屬性默認爲真,並點擊按鈕設置爲是假的。關閉事件觸發時,請檢查ForceClosed是否爲真。如果是這樣,然後執行任何所需的措施來防止意外關閉。
看來有很多不同的解決方案來解決這個問題,我幾乎只是實現了我看到的第一個工作。感謝大家。 – ecMode