2016-08-12 2 views
0

사용자가 AddIndex 버튼을 누르면 을 포함하는 새 TabPage이 생성됩니다. 동적으로 생성 된 DataGrid에는 선택한 TreeView Node BindingSource의 모든 값이 포함됩니다. 이 모든 것이 지금까지는 문제가되지 않지만 ...동적으로 생성 된 DataGrids에 의해 트리거 된 이벤트 처리

동적으로 생성 된 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

창문 DataGrid controlDataGridView 의해 대체 된 양식하는 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 
} 
관련 문제