日期:2014-05-18 浏览次数:21179 次
[Quote=引用:]
引用:
C# code
private 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("日期格式不正确!");
}
}
}
}
------解决方案--------------------
鉴于楼主这么奇怪的要求做出的奇怪改法
/// <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,表示验证不通过,如果不设的话,就表示默认验证通过,就算你上面报错也没用,焦点一样会离开当前编辑的单元格
}
}
}