我想在一个窗体里利用tabPage和textbox等控件录入数据,有保存和退出两个按钮。
点击退出按钮时判断之前是否保存过或者保存后是否又有更新,若有则弹出对话框提示是否保存,“是”保存“否”不保存;若没有则直接退出。请问该如何实现。

解决方案 »

  1.   

    Form_Closing(object sender, ArgEvent e )
    {
        if(!保存过||保存后有更新)
    {
        DialogResult d=MessageBox.Show("是否保存","",YesNO);
    if(d.Equels(DialogResult.Yes))
    {
    //保存
    }}
    }
      

  2.   

    不是触发窗体的closing事件,而是点击窗体里自己添加的“退出”按钮时判断窗体里内容更新后是否保存过,没有就弹出对话框提示保存
      

  3.   

    我觉得设一个全局的bool值好了!当最后一次点保存时bool为TRUE,其他地方操作把它设为FALSE,这样只要判断这个bool值就好了
      

  4.   

    用JS就可以
    比如
    OnClientClick="return confirm('确定要保存!');"
    就可以了
      

  5.   

    用一个全局bool 类型textbox控件的 TextChange 事件 判断文本是否发生过改变....设置bool的值如果要关闭窗体 先判断bool值  然后在用一楼的方法......
      

  6.   

    我有很多textbox,还有几个dateTimePicker,要一个一个设置吗?可以批量处理吗?
    PS:我的textbox的(name)(注意不是text属性)全部修改了
      

  7.   

    UP一下,继续望高手指点~
    补充说明,控件只有textbox和combobox,比较多,有几十个
      

  8.   


    有很多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)
    {
       //然后所有的
    }
      

  9.   


    更正一下
    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 事件中....
      

  10.   

    你可以把所有的TEXTBOX用一个TextChanged方法,只有有一个变动,就将flag置为false
      

  11.   

    晕了 有搞错了..... //或者----错了不要
      // if(ctl is TextBox || ctl is ComboBox)
      //{
      // ((TextBox)ctl).TextChange += new EventHandler(textBox_TextChanged)
      //}
      

  12.   

    谢谢wxm3630478,也谢谢其他各位,解决了~
      

  13.   

    先获取文本框里面的数据然后去和数据库取出来的数据进行匹配,如果是一样,那就说明没有更新,如果不一样的话那就说明有更新过, 可以声明一个BOOL值,修改过为TRUE 否则为FALSE 最后判断这个BOOL值就可以知道是否保存过, 最后MSG 一下,弹出消息框。。