回 帖 发 新 帖 刷新版面

主题:验证datagridview数据时怎样显示提示信息

我用datagridview控件绑定了一个数据表,其中第5列是datetime字段,我想光标在移出此列时做2个判断,即是否能转换为有效的datetime类型,还要判断是否大于今天的日期,如果有一个判断是false,就出现相应的提示信息,并将光标停留在此列。

于是我在datagridview控件的CellValidating事件中写入以下代码:
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    this.dataGridView1.EndEdit();
    switch (e.ColumnIndex)
    {
        case 4://日期列
            try
            {
                if (Convert.ToDateTime(this.dataGridView1.CurrentCell.Value) > DateTime.Today)
                {
                    MessageBox.Show("录入的进货日期不应大于今天日期,请重新录入正确的进货日期!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    e.Cancel = true;
                 }
             }
             catch (Exception)
             {
                 MessageBox.Show("录入的数据不是有效日期,请重新录入正确的进货日期!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
             return;
         default:
             return;
     }
}
运行后发现录入的日期大于今天的日期会出现提示信息,光标停在原地。
但是如果录入的数据不是datetime类型,不出现catch段中的messagebox提示,光标也停在原地。

请问:怎样才能显示catch中的提示信息?

回复列表 (共3个回复)

沙发

有人知道吗

板凳

会不会是没出错又不满足if的条件

3 楼

不是的,比如输入“sadnfljsdoijd”这样的字符串,不出现提示信息,光标也没移走。
我想会不会是以下原因,我做datagridview控件时,除了将数据库绑定以外,还设置了该列的format属性,是yyyy.MM.dd形式,是不是在执行CellValidating事件前,系统已经自己根据format属性进行检查了,但是系统又不出提示,该怎样解决啊?

我来回复

您尚未登录,请登录后再回复。点此登录或注册