2016-08-12 66 views
0

当用户按下AddIndex按钮时,将创建一个新的TabPage,其中包含新的DataGrid。这个动态创建的DataGrid包含所选的TreeView Node BindingSource的所有值。一切都很好,但...处理由动态创建的DataGrid触发的事件

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

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; } 
} 

回答

2

Windows窗体DataGrid control已被DataGridView取代,其中有一个CellValueChanged事件:

此代码,当用户按下按钮AddIndex执行。如果这不是绝对要求,您必须使用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 
} 
相关问题