关闭前确认

问题描述:

网络窗体窗体应用程序。我有一个组合框和一个文本框和一个关闭窗口按钮。现在,如果我在组合框或文本框中进行了任何更改并单击了关闭窗口按钮,它应该提示用户保存修改。如果不做任何修改(用户将只运行该应用程序,不作任何修改)那么它不应该提示用户。它应该直接关闭..我该怎么做?关闭前确认

一种方法是保持一个布尔标志称为_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

一个简单的方法是在表单中添加一个dirty成员,每当有任何变化时我将它设置为true,然后在表单关闭时检查它。

重写表单的OnClosing方法(或连接到Closing事件)。在处理程序中检查修改并向用户显示消息框。如果您不希望表单关闭,只需在返回之前将e.Cancel属性设置为false即可。