首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

datagridview中一列定义为datetime,只允许输入2012-xx-xx格式,输入其他的抛出错误,怎么做

2012-06-07 
datagridview中一列定义为datetime,只允许输入2012-xx-xx格式,输入其他的抛出异常,如何做?datagridview中

datagridview中一列定义为datetime,只允许输入2012-xx-xx格式,输入其他的抛出异常,如何做?
datagridview中一列定义为datetime,只允许输入2012-xx-xx格式,输入其他的抛出异常,如何做?

[解决办法]

C# code
[Quote=引用:]引用:C# codeprivate void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e){if (e.ColumnIndex == 2)//时间列{if (e.RowInde……对于字段本身就是datetime来说,如果输入的格……[/Quote]private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)        {            if (e.ColumnIndex == 2)//时间列            {                if (e.RowIndex > 0)                {                      try            {            }            catch (Exception )            {                MessageBox.Show("日期格式不正确!");            }                }            }        }
[解决办法]
鉴于楼主这么奇怪的要求做出的奇怪改法
C# code
        /// <summary>        /// CellValidating事件         /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)        {            const int dateColumnIndex = 0;// 设定你的那个列的序号,这里假设是第0列            if (e.ColumnIndex == dateColumnIndex && e.FormattedValue.ToString() != string.Empty)// 当前编辑的单元格在那个列内,并且单元格里面填了文本,包括空格            {                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^2012\-\d{2}\-\d{2}$");// 正则表达式,对应楼主奇怪的要求,只能输入2012-XX-XX,而且XX必须是数字,而且不能是一个X,必须两个Xo(╯□╰)o                 DateTime dt;                if (!regex.IsMatch(e.FormattedValue.ToString()) || !DateTime.TryParse(e.FormattedValue.ToString(), out dt))// 匹配正则失败,又或者是匹配正确,但不是时间类型                {                    MessageBox.Show("Error!!!");// 报个错                    e.Cancel = true;// 最重要的一步,将Cancel设为true,表示验证不通过,如果不设的话,就表示默认验证通过,就算你上面报错也没用,焦点一样会离开当前编辑的单元格                }            }        } 

热点排行