2009-09-10 58 views
1

我有一个绑定到自定义集合的datagrid视图。 我添加删除选项在UI中将添加和删除datagridview中的一行。有什么办法可以在datagridview中新增行吗?

有什么办法可以在datagridview中获取新增的行吗?

+0

您是否想知道如何将编辑行添加到DGV中,或者您想知道如何获取对新添加的行的引用? – BFree 2009-09-10 13:19:49

+0

我想知道如何获得对新添加的行的引用。假设我的UI带有数据网格中的一些现有行,并且用户现在添加了2个新行,我只想获得这两行的引用。我不想迭代数据网格视图中的所有行 – 2009-09-10 13:23:04

回答

3

DataGridView有一个RowAdded事件,每次添加Row(duh!)时都会触发它。事件参数的类型为:

public Form1() 
    { 
     InitializeComponent(); 
     this.dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded); 
    } 

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     DataGridViewRow newRow = this.dataGridView1.Rows[e.RowIndex]; 
    } 
+0

请参阅https://stackoverflow.com/a/3846937/1271037 – dovid 2017-06-29 05:42:01

1

RowPrePaint事件能够最好地获得新添加的行:其上有一个RowIndex属性,使您能够做这样的事情DataGridViewRowsAddedEventArgs。我正在使用databound datagridview。

private void dataGridView1_RowPrePaint(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     DataGridViewRow newRow = this.dataGridView1.Rows[e.RowIndex]; 
    } 

RowsAdded事件对我无效。我假设,DataGridView不会一次添加一行或有其他问题。 RowsAdded中的e.RowIndex始终返回0或1.

+0

P.S.刚刚意识到我很尴尬 - 迟到回答这个问题;-)希望我的帖子可以帮助别人。 – dushyantp 2012-04-12 09:26:07

+0

RowPrePaint事件也适用于我。 RowsAdded事件的问题在于,当我们设置DataGridView的DataSource时,它会同时插入一个范围,并且不会为每一行调用RowsAdded事件。但是RowPrePaint会针对将要绘制的每一行进行调用。很好! – 2013-02-08 18:22:46

相关问题