C# 如何验证和编辑单元格值

C# 如何验证和编辑单元格值,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在开发以MS ACCESS为后端的C#winforms应用程序。在datagridview中,我有一列“startTime” 我的要求是我想验证startime,如果需要,以编程方式编辑值并保存它 例如,如果用户输入“8.00am”而不是“8:00am”,我的程序不应该抛出一个错误,说“无效的数据类型”(在数据库中,“StartTime”是datetime类型的字段)。相反,我的程序应该将上午8:00改为上午8:00,并将上午8:00发送到后端。 下面粘贴的是代码。有什么建议吗 privat

我正在开发以MS ACCESS为后端的C#winforms应用程序。在datagridview中,我有一列“startTime”

我的要求是我想验证startime,如果需要,以编程方式编辑值并保存它

例如,如果用户输入“8.00am”而不是“8:00am”,我的程序不应该抛出一个错误,说“无效的数据类型”(在数据库中,“StartTime”是datetime类型的字段)。相反,我的程序应该将上午8:00改为上午8:00,并将上午8:00发送到后端。 下面粘贴的是代码。有什么建议吗

private void dgvSession_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
        //** Validation for StartTime
        if (e.ColumnIndex == this.dgvSession.Columns["StartTime"].Index)
        {

        string time = e.FormattedValue.ToString().Trim();
        strtDt = e.FormattedValue.ToString().Trim();
        if (!ValidateTime(time))
        {
            //MessageBox.Show("Entered time is not in a correct format.);

            e.Cancel = true;
            return;
        }
    }
}

public bool ValidateTime(string thetime)
{
    Regex checktime = new Regex(@"(^([0-9]|[0-1][0-9]|[2][0-3])[.:]([0-5][0-9])(\s{0,1})(AM|PM|am|pm|aM|Am|pM|Pm{2,2})$)|(^([0-9]|[1][0-9]|[2][0-3])(\s{0,1})(AM|PM|am|pm|aM|Am|pM|Pm{2,2})$)");

    return checktime.IsMatch(thetime);
}

老实说,我的建议是将单元格更改为组合框单元格,并且所有时间都是预先填充的。限制用户可以输入的内容总是比较容易的,而不是允许他们输入任何内容,并在以后尝试进行正面或反面的操作

粗略代码:

        DataGridViewComboBoxColumn timeColumn = new DataGridViewComboBoxColumn();
        timeColumn.DisplayMember = "TimeOfDay";
        DateTime startTime = DateTime.Today;
        for (int i = 0; i <= 23; i++)
        {
            for (int j = 0; j <= 60; j += 15)
            {
                timeColumn.Items.Add(startTime.AddHours(i).AddMinutes(j));
            }
        }

        this.dataGridView1.Columns.Add(timeColumn);
DataGridViewComboxColumn timeColumn=newDataGridViewComboxColumn();
timeColumn.DisplayMember=“TimeOfDay”;
DateTime startTime=DateTime.Today;

对于(int i=0;i您需要确定条目是否有效,然后确定它是否没有创建新函数或将条目更改为有效日期时间的方法。用户可能会输入一些可能很难的疯狂内容

如果执行此操作,则可以轻松地将该单元格的值设置为有效条目:

dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = YourNewDateValue;