【问题标题】:Handling events triggered by dynamically created DataGrids处理由动态创建的 DataGrids 触发的事件
【发布时间】:2016-08-12 14:38:50
【问题描述】:

当用户按下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; }
}

【问题讨论】:

    标签: c# winforms dynamic datagrid event-handling


    【解决方案1】:

    Windows 窗体 DataGrid control 已被具有 CellValueChanged 事件的 DataGridView 取代。如果不是绝对要求您必须使用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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 2011-04-25
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多