处理由动态创建的DataGrid触发的事件
问题描述:
当用户按下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; }
}
答
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
}