2010-06-08 53 views
4

網絡窗體窗體應用程序。我有一個組合框和一個文本框和一個關閉窗口按鈕。現在,如果我在組合框或文本框中進行了任何更改並單擊了關閉窗口按鈕,它應該提示用戶保存修改。如果不做任何修改(用戶將只運行該應用程序,不作任何修改)那麼它不應該提示用戶。它應該直接關閉..我該怎麼做?關閉前確認

回答

1

一種方法是保持一個布爾標誌稱爲_changed或類似的東西作爲你的窗體上的成員變量。 然後在TextBox的TextChanged事件和ComboBox的SelectedIndexChanged事件中,您只需設置_changed = true。

然後,在表單關閉之前,如果_changed爲true,則提示用戶。

編輯:

如果您有窗體上的許多TexBox控制,可以勾他們都到同一個TextChanged事件處理程序。然後,無論哪個文本框的文本更改,_changed將被設置爲true。

然後做多組合框控件和一個SelectedIndexChanged事件相同。

如果您確實有很多控件,而不是手動掛接每個控件,甚至可以編寫一個遞歸循環遍歷表單的Controls集合的方法,並將每種類型的控件掛接到適當的事件處理函數。然後,您可以以超過1種形式重複使用該方法,爲您節省大量時間和維護,因爲您添加新控件時會自動處理。

+0

謝謝..它的工作..我還有一個疑問。在這裏我只有一個文本框和一個組合框,並且我將在TextBox的組合和TextChanged事件的SelectedIndexChanged中將_changed設置爲true。如果我有更多的控制,該怎麼辦?我是否應該在每個控制中將_changed設置爲true或者是否有任何選項,以便我可以在該表單中的任何控件發生任何更改時應用它。我的意思是說,我可以申請的形式..即,如果有任何變化形式_changed必須爲真 – saeed 2010-06-08 11:12:27

+0

我編輯我的答案根據您的後續問題。 如果你認爲我的回答最有用,那麼投票如何? ;) – 2010-06-09 07:10:25

4

一個簡單的方法是在表單中添加一個dirty成員,每當有任何變化時我將它設置爲true,然後在表單關閉時檢查它。

4

重寫表單的OnClosing方法(或連接到Closing事件)。在處理程序中檢查修改並向用戶顯示消息框。如果您不希望表單關閉,只需在返回之前將e.Cancel屬性設置爲false即可。