我正在寻找一个在行数改变时触发的事件,即用户以任何方式添加行或删除行。我正在尝试使用此代码,但它无法正常工作。
designer.cs
this.dataGridView1.Rows.CollectionChanged += new System.Windows.Forms.DataGridViewCollectionChangedEventHandler(this.dataGridView1_CollectionChanged);
Form1.cs的
private void dataGridView1_CollectionChanged(object sender, DataGridViewRowsAddedEventArgs e)
{
}
有没有人看到这个问题?
答案 0 :(得分:1)
您是否尝试过查看DataGridView.UserDeletedRow和DataGridView.UserAddedRow事件?
我也可以通过设置这样的处理程序来激活你的CollectionChanged事件。
public Form1()
{
InitializeComponent();
this.dataGridView1.Rows.CollectionChanged += new CollectionChangeEventHandler(Rows_CollectionChanged);
}
void Rows_CollectionChanged(object sender, CollectionChangeEventArgs e)
{
Debug.Print(e.Action.ToString()); // to use Debug.Print function add a using System.Diagnostics to your program
Debug.Print(e.Element.ToString());
DataGridViewRow row = (DataGridViewRow)e.Element;
}
答案 1 :(得分:1)
DataGridView上有两个直接可用的事件
但是,这些仅在用户使用DataGridView功能添加或删除行时触发。如果要检测从基础DataTable(etc)添加或删除的行,则需要处理集合公开的事件。
DataTable
有两个事件:
如果这些事件不是您想要的,那么您可以在此处找到完整的DataGridView事件文档:http://msdn.microsoft.com/en-us/library/x4dwfh7x