C# 仅在编辑行完成后才允许添加下一行

C# 仅在编辑行完成后才允许添加下一行,c#,datagridview,rows,C#,Datagridview,Rows,我使用的是DataGridView,并将AllowUserToAddress设置为True,这样一旦开始编辑一行,另一个空行就会添加到控件中 但是,我想知道一种方法,在用户完成输入前一行的数据之前,防止添加下一行。这意味着当DataGridView的所有列(即文本框)变为非空时,将添加下一个空行 我的替代方法是设置一个行验证函数,当用户试图留下一个不完整的行时,该函数将得到调用 我认为您应该将AllowUserToAddress设置为false,然后为cell changed事件添加一个处理程序

我使用的是DataGridView,并将AllowUserToAddress设置为True,这样一旦开始编辑一行,另一个空行就会添加到控件中

但是,我想知道一种方法,在用户完成输入前一行的数据之前,防止添加下一行。这意味着当DataGridView的所有列(即文本框)变为非空时,将添加下一个空行


我的替代方法是设置一个行验证函数,当用户试图留下一个不完整的行时,该函数将得到调用

我认为您应该将AllowUserToAddress设置为false,然后为cell changed事件添加一个处理程序。在处理程序中,如果编辑在最后一行,请检查该行中的所有编辑是否都包含某些内容。如果有,则添加一行

编辑:类似这样的内容:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.RowCount > 0 && e.RowIndex == dataGridView1.RowCount - 1)
    {
        foreach (DataGridViewCell cell in dataGridView1.Rows[e.RowIndex].Cells)
        {
            if (cell.Value == null)
            {
                return;
            }
        }
        dataGridView1.Rows.Add();
    }
}

我认为您应该将AllowUserToAddress设置为false,然后为cell changed事件添加一个处理程序。在处理程序中,如果编辑在最后一行,请检查该行中的所有编辑是否都包含某些内容。如果有,则添加一行

编辑:类似这样的内容:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.RowCount > 0 && e.RowIndex == dataGridView1.RowCount - 1)
    {
        foreach (DataGridViewCell cell in dataGridView1.Rows[e.RowIndex].Cells)
        {
            if (cell.Value == null)
            {
                return;
            }
        }
        dataGridView1.Rows.Add();
    }
}