我犯了一個錯誤handelder,它將在我輸入無效的時間或日期格式(如12:456和55-32-1986)時激活。然後程序應該將單元格值更改回prev值。以編程方式無法編輯dataGridView單元格的值
我使用.NET 4.5,這是一個WinForms應用程序
代碼:
dataGridView2.DataError += dataGridView2_DataError;
private void dataGridView2_DataError(object sender, DataGridViewDataErrorEventArgs anError)
{
// MessageBox.Show("Error happened " + anError.Context.ToString());
if (anError.Context == DataGridViewDataErrorContexts.Commit)
{
MessageBox.Show("Commit error");
}
if (anError.Context == DataGridViewDataErrorContexts.CurrentCellChange)
{
MessageBox.Show("Cell change");
}
if (anError.Context == DataGridViewDataErrorContexts.Parsing)
{
MessageBox.Show("parsing error");
}
if (anError.Context == DataGridViewDataErrorContexts.LeaveControl)
{
MessageBox.Show("leave control error");
}
if ((anError.Exception) is ConstraintException)
{
DataGridView view = (DataGridView)sender;
view.Rows[anError.RowIndex].ErrorText = "an error";
view.Rows[anError.RowIndex].Cells[anError.ColumnIndex].ErrorText = "an error";
anError.ThrowException = false;
}
if ((anError.Exception) is FormatException)
{
if (dataGridView2.CurrentCell == dataGridView2.CurrentRow.Cells[3])
{
MessageBox.Show("Please enter a valid time value" + prevTime);
dataGridView2.CurrentCell.Value = prevTime;
dataGridView2.EndEdit();
}
if (dataGridView2.CurrentCell == dataGridView2.CurrentRow.Cells[2])
{
MessageBox.Show("Please enter a valid date");
dataGridView2.CurrentCell.Value = prevDate;
dataGridView2.EndEdit();
}
}
//cell types
d.Tables.Add(booking);
booking.Columns.Add("nr.", typeof(int));
booking.Columns.Add("Name", typeof(string));
booking.Columns.Add("Date", typeof(DateTime));
booking.Columns.Add("Time", typeof(DateTime));
//Datasource
dataGridView2.DataSource = booking;
}
prevDate-和TIMEVALUE在datagrid_onBeginEdit聲明,好讓我的價值觀。
我有prev值。代碼從頭到尾運行。但是從第2行開始,它不會以編程方式更改單元格的值。我只能做到這一點, ,當代碼不能改變的值,那麼錯誤消息框不斷出現。 datagridview不是隻讀的。
Cells:nr。 /姓名/日期/時間
任何幫助將不勝感激,在此先感謝。
編輯:我添加了事件的完整代碼handeler
PS。如果我在某個地方不清楚,或者如果你需要更多的信息,那就告訴你需要什麼。
也許這對其他人更清楚,但是,你的UI框架是什麼? WPF?的WinForms?的WebForms? – Jay
你在哪裏打電話給你的事件處理程序?這是來自'DataGridView'上的特定事件嗎?如果是這樣,哪一個? –