【问题标题】:DataGridView Event "RowsAdded" doesn't show the correct RowIndex for the NewRowDataGridView 事件“RowsAdded”没有为 NewRow 显示正确的 RowIndex
【发布时间】:2016-11-12 20:43:59
【问题描述】:

在使用以下命令在DataGridView 中创建新行时

dataGridView1.Rows.Add(); 

我有一个新行,但 e.RowIndex 仍然显示新创建行之前的索引。

private void button1_Click(Object sender, EventArgs e) 
{
       dataGridView1.Rows.Add(); 
}

private void dataGridView1_RowsAdded(Object sender, DataGridViewRowsAddedEventArgs e) 
{
       MessageBox.Show(e.RowCount + ";" + e.RowIndex); 
} 

所以如果我有 2 行,我通常会有 RowIndex 0 和 1。 但是,当使用“.add()”以编程方式添加新行时,RowsAdded 事件显示 RowIndex 仍然是 1 而不是 2,即新创建的 Row。

【问题讨论】:

  • dataGridView1.Rows.Add()不应该带参数吗?
  • 这是可选的。如果您想立即将数据填充到列中,使用 .add("1","2","3") 等内容是有意义的。但即便如此它也不起作用。
  • 我无法重现该问题,所以我猜测问题出在 datagridview 设置中的其他地方。
  • 我刚刚做了一个全新的项目,没有任何调整或特殊设置,我可以立即重现。您能否将示例应用程序发送给我以检查我的系统?你用的是哪个框架?
  • 我似乎找不到问题,因为它与我合作。可以分享一下colums或者数据源的代码吗

标签: c# datagridview


【解决方案1】:

这可能会有所帮助,或者会使它更加混乱。该行插入到最后一个新行之前:

dataGridView1.RowsAdded += (o, e) => Debug.Print(e.RowIndex + "\t" + dataGridView1.RowCount 
                                         + "\t" + dataGridView1.Rows[e.RowIndex].IsNewRow);
dataGridView1.Columns.Add("", "");  //  0   1   True
dataGridView1.Rows.Add();           //  0   2   False
dataGridView1.Rows.Add();           //  1   3   False
dataGridView1.Rows.Add();           //  2   4   False

但如果用户添加行,则新行将添加到用户刚刚输入的最后一行之后:

1   2   True
2   3   True
3   4   True

【讨论】:

  • 我看到了 Slai,但对我来说仍然不正确。 RowIndex 始终在 RowCount 之后为 1。因此“IsNew”总是会抛出 False。对我来说,这不是一个正确的行为。为什么我们在手动输入和以编程方式输入时会有所不同。最后,有人试图归档的内容是一样的。
  • 我认为是因为最后一行不是很“真实”的行,而更像是一个空白行模板,供用户输入新行。此外,无论 .AllowUserToAddRows 设置为 True 还是 False,此行为都可以保持一致性。
  • 但最后添加了一个新行。这个新行触发了一个事件,称为 private void dataGridView1_RowsAdded(Object sender, DataGridViewRowsAddedEventArgs e) { MessageBox.Show(e.RowCount + ";" + e.RowIndex);当我使用我的 .add() 时,基本上也会发生同样的情况。所以我希望在这种情况下会打印出相同的结果,因为我们有相同的结果;一个新的行。从用例来看,它是绝对平等的。但我们有不同的行为。
猜你喜欢
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多