退出确认保存 我想在一个窗体里利用tabPage和textbox等控件录入数据,有保存和退出两个按钮。点击退出按钮时判断之前是否保存过或者保存后是否又有更新,若有则弹出对话框提示是否保存,“是”保存“否”不保存;若没有则直接退出。请问该如何实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Form_Closing(object sender, ArgEvent e ){ if(!保存过||保存后有更新){ DialogResult d=MessageBox.Show("是否保存","",YesNO);if(d.Equels(DialogResult.Yes)){//保存}}} 不是触发窗体的closing事件,而是点击窗体里自己添加的“退出”按钮时判断窗体里内容更新后是否保存过,没有就弹出对话框提示保存 我觉得设一个全局的bool值好了!当最后一次点保存时bool为TRUE,其他地方操作把它设为FALSE,这样只要判断这个bool值就好了 用JS就可以比如OnClientClick="return confirm('确定要保存!');"就可以了 用一个全局bool 类型textbox控件的 TextChange 事件 判断文本是否发生过改变....设置bool的值如果要关闭窗体 先判断bool值 然后在用一楼的方法...... 我有很多textbox,还有几个dateTimePicker,要一个一个设置吗?可以批量处理吗?PS:我的textbox的(name)(注意不是text属性)全部修改了 UP一下,继续望高手指点~补充说明,控件只有textbox和combobox,比较多,有几十个 有很多TextBox , ComboBox?foreach(Control ctl in this.Controls){ if(ctl is TextBox) { ((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged) } if(ctl is ComboBox) { ((TextBox)ctl).TextChange += new EventHandler(combobox_TextChanged) } //TextBox 和 ComboBox 的TextChange事件签名应该是一样的 用一个也可以}只要写一个 private void textbox_TextChange(object sender,EventArge e){ //然后所有的}private void combobox_TextChange(object sender,EventArge e){ //然后所有的} 更正一下foreach(Control ctl in this.Controls){ if(ctl is TextBox) { ((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged) } if(ctl is ComboBox) { //更正这里 ((ComboBox)ctl).TextChange += new EventHandler(combobox_TextChanged) } //或者 // if(ctl is TextBox || ctl is ComboBox) //{ // ((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged) //} //TextBox 和 ComboBox 的TextChange事件签名应该是一样的 用一个也可以}//这段代码写在 窗体的构造方法 或者 Load 事件中.... 你可以把所有的TEXTBOX用一个TextChanged方法,只有有一个变动,就将flag置为false 晕了 有搞错了..... //或者----错了不要 // if(ctl is TextBox || ctl is ComboBox) //{ // ((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged) //} 谢谢wxm3630478,也谢谢其他各位,解决了~ 先获取文本框里面的数据然后去和数据库取出来的数据进行匹配,如果是一样,那就说明没有更新,如果不一样的话那就说明有更新过, 可以声明一个BOOL值,修改过为TRUE 否则为FALSE 最后判断这个BOOL值就可以知道是否保存过, 最后MSG 一下,弹出消息框。。 问下,list可以做webservice的方法吗啊 C#___关于winform 读取系统文件的问题,赠所有积分! 在winfrom中,怎样做一个圆形的图片按钮啊? WPF里主进程上使用某个子线程上实例化的一个对象 [高分]怎么判断一个程序是否已经安装? 如何分解这些字符串! 当整个应用程序失去焦点(没有任何一个属于本程序的窗体拥有焦点)时发生的事件是什么呢? 一个方法里,有个委托调用自己这个方法,该怎么理解? 怎么实现网站首页题目自动截取一定长度?(在线等) 类中可以获得被实例化后的名字吗? C#隐藏展开怎么实现? C#中如何制作一个界面呈现一个流程图,然后点击节点打开相应窗体?给个思路吧
{
if(!保存过||保存后有更新)
{
DialogResult d=MessageBox.Show("是否保存","",YesNO);
if(d.Equels(DialogResult.Yes))
{
//保存
}}
}
比如
OnClientClick="return confirm('确定要保存!');"
就可以了
PS:我的textbox的(name)(注意不是text属性)全部修改了
补充说明,控件只有textbox和combobox,比较多,有几十个
有很多TextBox , ComboBox?foreach(Control ctl in this.Controls)
{
if(ctl is TextBox)
{
((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged)
}
if(ctl is ComboBox)
{
((TextBox)ctl).TextChange += new EventHandler(combobox_TextChanged)
} //TextBox 和 ComboBox 的TextChange事件签名应该是一样的 用一个也可以
}只要写一个
private void textbox_TextChange(object sender,EventArge e)
{
//然后所有的
}private void combobox_TextChange(object sender,EventArge e)
{
//然后所有的
}
更正一下
foreach(Control ctl in this.Controls)
{
if(ctl is TextBox)
{
((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged)
}
if(ctl is ComboBox)
{
//更正这里
((ComboBox)ctl).TextChange += new EventHandler(combobox_TextChanged)
} //或者
// if(ctl is TextBox || ctl is ComboBox)
//{
// ((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged)
//} //TextBox 和 ComboBox 的TextChange事件签名应该是一样的 用一个也可以
}//这段代码写在 窗体的构造方法 或者 Load 事件中....
// if(ctl is TextBox || ctl is ComboBox)
//{
// ((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged)
//}