关闭前确认

sae*_*eed 5 .net c# event-handling winforms

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

Jac*_*sch 1

一种方法是在表单上保留一个名为 _changed 或类似名称的布尔标志作为成员变量。然后在 TextBox 的 TextChanged 事件和 ComboBox 的 SelectedIndexChanged 事件中,只需设置 _changed = true 。

然后,在表单关闭之前,您会提示用户 _changed 是否为 true。

编辑:

如果窗体上有许多 TexBox 控件,则可以将它们全部挂接到同一个 TextChanged 事件处理程序。然后,无论哪个TextBox的文本发生改变,_changed都会被设置为true。

然后对多个 ComboBox 控件和一个 SelectedIndexChanged 事件执行相同的操作。

如果您确实有许多控件,您甚至可以编写一个方法,递归地循环表单的 Controls 集合,并将每种类型的控件挂接到适当的事件处理程序,而不是手动挂接每个控件。然后,您可以在不止一种形式中重用该方法,以节省大量时间和维护成本,因为每当您添加新控件时,它们都会自动得到处理。