c# - 如何将集合已更改事件添加到Windows窗体应用程序

时间:2012-06-28 00:19:56

标签: c# windows forms datagrid

我正在寻找一个在行数改变时触发的事件,即用户以任何方式添加行或删除行。我正在尝试使用此代码,但它无法正常工作。

designer.cs

this.dataGridView1.Rows.CollectionChanged += new System.Windows.Forms.DataGridViewCollectionChangedEventHandler(this.dataGridView1_CollectionChanged);

Form1.cs的

    private void dataGridView1_CollectionChanged(object sender, DataGridViewRowsAddedEventArgs e)
    {
    }

有没有人看到这个问题?

2 个答案:

答案 0 :(得分:1)

您是否尝试过查看DataGridView.UserDeletedRowDataGridView.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上有两个直接可用的事件

RowsAdded

RowsRemoved

但是,这些仅在用户使用DataGridView功能添加或删除行时触发。如果要检测从基础DataTable(etc)添加或删除的行,则需要处理集合公开的事件。

DataTable有两个事件:

TableNewRow

RowDeleted

如果这些事件不是您想要的,那么您可以在此处找到完整的DataGridView事件文档:http://msdn.microsoft.com/en-us/library/x4dwfh7x