private void dgvWorkOrder_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex == dgvWorkOrder.RowCount - 1)
{
try
{
string check = dgvWorkOrder.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
}
catch (Exception ex)
{
MessageBox.Show("Please input a valid entry.", "Empty");
e.Cancel = true;
}
}
if (e.ColumnIndex == 2 && e.RowIndex == dgvWorkOrder.RowCount - 1) ;
{
try
{
decimal check = Convert.ToDecimal(dgvWorkOrder.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
if (check == 0)
{
throw new Exception();
}
}
catch (Exception ex)
{
MessageBox.Show("Please input a valid entry.");
e.Cancel = true;
}
}
}
使用上面的代码,我正在尝试执行离开事件,检查用户是否输入了任何内容。如果他们没有,我想要它,以便他们不能离开那个单元格,除非完全退出程序,否则他们可以做任何其他事情。
按要求更新。
答案 0 :(得分:1)
如果您想让用户不要离开单元格,您只需要使用其他活动CellValidating
,并将e.Cancel
设置为true
。您无需使用此事件设置CurrentCell
或BeginEdit
。
答案 1 :(得分:0)
正如其他人所说,RowLeave事件没有e.Cancel。尝试具有e.Cancel可用的RowValidating事件。得到这个: " https://bytes.com/topic/visual-basic-net/answers/440349-vb2005-stop-user-leaving-row-datagridview"
答案 2 :(得分:0)
private void Grid_Product_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
Grid_Product.EndEdit(); //it helps for instant value update before leaving.
/// write youre code here...
}