2016-08-12 67 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 
} 
相關問題