处理由动态创建的DataGrids触发的事件

时间:2016-08-12 14:38:51

标签: c# winforms dynamic datagrid event-handling

当用户按下AddIndex按钮时,会创建一个包含新TabPage的新DataGrid。动态创建的DataGrid包含所选TreeView Node BindingSource的所有值。一切都很好,但是......

我必须能够处理用户在动态创建的DataGrid中更改单元格值的事件。但我不知道如何访问动态创建的网格的单元格更改事件?

当用户按下AddIndex按钮时执行此代码:

private void addIndexTabButton_Click(object sender, EventArgs e) 
{
    if (myTreeView.SelectedNode == null) return;

    myNode selectedNode = (myNode)myTreeView.SelectedNode.Tag;

    TabPage page = new TabPage(selectedNode.Name);

    DataGrid grid = new DataGrid();
    grid.Dock = DockStyle.Fill;
    grid.DataSource = selectedNode.Index;

    page.Controls.Add(grid);
    myTabControl.Controls.Add(page);
}

private class myNode
{
    public int Id { get; set; }
    public string Name { get; set; }
    public BindingSource Index { get; set; }
}

1 个答案:

答案 0 :(得分:2)

Windows窗体DataGrid control已被DataGridView取代,其CellValueChanged事件。如果您必须使用DataGrid并非绝对要求,我会考虑使用DataGridView

您可以给它一个像这样的处理程序:

DataGridView grid = new DataGridView();

grid.CellValueChanged += Grid_CellValueChanged;

处理程序如下所示:

private static void Grid_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    var grid = (DataGridView)sender;

    //  Do stuff
}