C#阻止DataGridView离开

时间:2014-02-28 14:01:55

标签: c# datagridview cells

    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;
            }
        }
    }

使用上面的代码,我正在尝试执行离开事件,检查用户是否输入了任何内容。如果他们没有,我想要它,以便他们不能离开那个单元格,除非完全退出程序,否则他们可以做任何其他事情。

按要求更新。

3 个答案:

答案 0 :(得分:1)

如果您想让用户不要离开单元格,您只需要使用其他活动CellValidating,并将e.Cancel设置为true。您无需使用此事件设置CurrentCellBeginEdit

答案 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...
}