代码之家  ›  专栏  ›  技术社区  ›  Ruud

DataGridView当前行不包括新行

  •  1
  • Ruud  · 技术社区  · 17 年前

    我想获取DataGridView当前行的索引。问题是,如果当前行是新行,则当前行设置为最后一行而不是新行。我无法检查要选择的行,因为如果选择的行并不意味着它是当前行,并且不一定要选择当前行。

    我可以得到新行的索引,但是如何知道新行是否是当前行?

    3 回复  |  直到 13 年前
        1
  •  3
  •   Michael Todd    17 年前

    我通过以下代码钩住了CellClick事件:

    private void uiEntries_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        Console.WriteLine(e.RowIndex == uiEntries.NewRowIndex);
    }
    

    当该条件为真时,用户“选择”新行。根据这些信息,您可能需要实际插入一条新记录(使用..row s.add()方法),然后才能对其执行任何操作,因为新行实际上并不存在于集合中;它只是作为一个占位符来表示新行。

        2
  •  0
  •   P.K    17 年前

    这个属性值可以解决您的问题吗?

    数据报视图1.CurrentCell.RowIndex

        3
  •  0
  •   user1318499    13 年前

    我使用CellCenter事件将currentCell.rowIndex保存到表单变量中。单击另一个按钮将使用最后一个现有行索引触发此事件,而不是使用我们需要的新行索引,因此测试焦点以忽略该情况。

    这避免了像处理CellClick事件那样检查所有可能的键和鼠标操作,这些操作可能会将光标移动到新行。

    从VB自动转换的代码:

    private int ActualCurrentRowIndex;
    
    private void DataGridView1_CellEnter(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
    {
        if (DataGridView1.Focused) {
            ActualCurrentRowIndex = DataGridView1.CurrentCell.RowIndex;
        }
    }
    
    推荐文章