首页 新闻 会员 周边

Winform 中如何判断Form页面中控件值被更改

0
悬赏园豆:20 [已解决问题] 解决于 2010-12-23 14:10

在Form关闭是,需要判断Form中控件的值是否有更改,如果有则关闭之前提示是否保存。

现役程序员的主页 现役程序员 | 初学一级 | 园豆:140
提问于:2010-12-23 12:12
< >
分享
最佳答案
0

1. 设置一个布尔类型的字段 isChanged,保存是否有更改;

2. 如是控件是 TextBox,在其 TextChanged 事件处理函数中将 isChanged 设置为 true;

3. 处理 Form 的 FormClosing 事件,在其中弹出提示。

参考代码如下:

 

public partial class Form1 : Form
{
private bool isChanged = false;

public Form1()
{
InitializeComponent();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
isChanged
= true;
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (isChanged)
{
DialogResult r
= MessageBox.Show("数据已修改,是否放弃?", "提示",
MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2);
if (r == System.Windows.Forms.DialogResult.No)
e.Cancel
= true;
}
}
}

 

收获园豆:15
鹤冲天 | 老鸟四级 |园豆:2379 | 2010-12-23 12:51
这个我已经考虑过了,textBox,可以共用一个TextChanged,还有其它控件,如果修改值又退回了呢,简单的isChanged = true;也是不行的。我是想看看有没有这样的机制。 不过感谢你的回答,结贴了
现役程序员 | 园豆:140 (初学一级) | 2010-12-23 14:09
可以在窗体加载时先把所有控件的值保存起来,如放在一个Dictionary中,在 窗体关闭时逐一判断。
鹤冲天 | 园豆:2379 (老鸟四级) | 2010-12-23 19:41
其他回答(1)
0

用模式对话窗吧!(按钮事件)

1.判断值是否修改

2.如果没修改 this.close();

3.如果修改

DialogResult MsgBoxResult = MessageBox.Show("Do you want to confirm the recorder?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);
                    if (MsgBoxResult == DialogResult.Yes)//如果对话框的返回值是YES(按"Y"按钮)
                    {

        //业务逻辑

        this.close();

       }

 

收获园豆:5
like%'远远'% | 园豆:635 (小虾三级) | 2010-12-23 12:41
我的意思是怎么判断Form中的所有控件进行是否有修改过,如果修改过则在关闭时提示是否保存。
支持(0) 反对(0) 现役程序员 | 园豆:140 (初学一级) | 2010-12-23 12:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册