防止在填充当前行之前在DataGridView中出现新行?

Hai*_*ihi 7 c# datagridview winforms datagridviewrow

我在C#3.5的WinForm应用程序中有一个DataGridView。

AllowUserToAddNewRow属性设置为true。当用户在DataGridView中键入任何文本时,另一新行将自动添加到DataGridView。我不希望添加新行,直到对当前行执行了一些检查并且所有必要的信息都已填满为止。

示例:我有一个带有空白行的DataGridView: 带有空白行的DataGridView

当我开始输入时,添加新行还为时过早:

我想要的是仅在用户输入数量后才添加新行:

Ari*_*bal 5

设置 AllowUserToAddNewRow = false 现在最初向您的数据源添加一个空白行,例如。如果您将 DataGridView 绑定到名为 DT 的 DataTable,那么就在此之前

dataGridView1.DataSource = DT;
Run Code Online (Sandbox Code Playgroud)

做类似的事情

 DT.Rows.Add(DT.NewRow());
Run Code Online (Sandbox Code Playgroud)

这是最初有一个空白行,以便可以输入第一条记录。然后处理事件 dataGridView1.CellEndEdit,在该事件中编写如下内容:

void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 1)//The index of your Quantity Column
        {
            int qty = (int)DT.Rows[e.RowIndex][e.ColumnIndex];
            if (qty > 0)//Your logic if required
            {
                DT.Rows.Add(DT.NewRow());                    
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 我认为这就是我们在这里努力实现的目标。这个想法是 Rows 永远不会自动添加(您可以通过将 AllowUserToAddNewRow 设置为 False 来实现这一点,我觉得您错过了这一点)。一旦您将此属性设置为 false,新行将永远不会添加,那么您如何添加新行呢?您将新行添加到基础数据源,并“有条件地”执行此操作,即当我在上面的 CellEndEdit ebent 处理程序代码中显示的 Qty 大于 0 时。 (2认同)

Ali*_*ssa 0

我认为在 CellClick 事件中,您可以检查您所在的列,然后添加一个新行,例如:DataGridView1.Rows.Add()