none
当触发到datagridview的dataerror事件后,如何关闭Form的窗口? RRS feed

  • 问题

  • 我在datagridview中填单元格的数据,当数据类型输错的时候,弹出了警告框。但此时按警告框的确定,再按Form1右上方的

    红色叉老是退不出,一直弹出刚才的警告框。强制我一定要先输入正确数据后才能退出。

    我试过在一个button事件里面写

    Application.Exit();//程序退出 
    this.Close();//关闭当前窗体

    还是不能绕过警告。

    请问如何做,使得按红色叉的时候,先弹出一个确认窗口(“是否确认退出?”),当按“确认”后就绕过警告,直接退出?

    2012年4月26日 14:46

答案

全部回复

  • 对了,不可以使用Application.Exit和this.Close。因为我上面所说的都是在new出来的子窗体中,如果调用这两个方法,那么父窗体也退出了。

    现在只想让子窗体绕过警告,正常退出。

    2012年4月26日 16:11
  • 一种简单的方法就是处理DataGridView.DataError 事件的同时,把dataGridView 的CauseValidation属性设置为false。这样可以运行在编辑cell 出错的情况下,点击退出按钮或者红X退出当前窗体。

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.dataerror.aspx

    但是为什么这样做呢?

    一个是一旦有cell 出错,所有的数据都不会进行保存,而且对数据库来说,本来就设计成那个样子,填充的数据一定是要符合要求的。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us

    2012年4月27日 4:01
    版主
  • 可以绕过警告

       void dv_DataError(object sender, DataGridViewDataErrorEventArgs e)
            {
                //e.ThrowException = false;
                this.Close();

            }

    参照

    http://www.cnblogs.com/ServiceboyNew/archive/2012/04/10/2440813.html


    http://blog.csdn.net/zx13525079024

    2012年4月27日 4:44
  • 一种简单的方法就是处理DataGridView.DataError 事件的同时,把dataGridView 的CauseValidation属性设置为false。这样可以运行在编辑cell 出错的情况下,点击退出按钮或者红X退出当前窗体。

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.dataerror.aspx

    但是为什么这样做呢?

    一个是一旦有cell 出错,所有的数据都不会进行保存,而且对数据库来说,本来就设计成那个样子,填充的数据一定是要符合要求的。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us

    您好,关闭时,“一旦有cell 出错,所有的数据都不会进行保存”这正是我要的目的。我是这样假设的:用户在修改数据过程中遇到类型错误的警告,这时用户只想退出,不想再修改下去了,那么按红叉时允许用户直接退出。
    2012年4月27日 6:22
  • 嗯,那就dataError 处理就行了。

    谢谢 开心 的回复。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us

    2012年4月27日 6:43
    版主
  • 谢谢大家!如Rocky Yue所说,在DataGridView.DataError 事件里面写上dataGridView1.CausesValidation = false;就行了。

    2012年4月27日 7:13