需要一个事件处理程序来处理与另一个动态添加的控件交互的动态添加的控件



我需要动态添加的带有单击事件的标签,以便向动态添加的数据网格视图添加行。我知道如何让事件处理程序使用动态添加的标签,但我不确定如何让它与 datagridview 一起使用。

我尝试将 datagridview 参数添加到事件处理程序,但这对我不起作用。

用于创建数据网格视图和链接标签的代码。

foreach (DataRow rows in dtbl.Rows)
            {
                // Create Datagridview
                DataGridView datagridview = new DataGridView();
                // Create link labels
                LinkLabel linkLabel = new LinkLabel();
                // Add event handler to the link labels
                linkLabel.Click += new EventHandler(this.linkLabel_Click); 
                this.Controls.Add(datagridview);
                this.Controls.Add(linkLabel);
            }
// Event handler 
  private void linkLabel_Click(object sender, EventArgs e)
        {
            // This doesnt work because "datagridview" doesnt exist, but I just have no idea how to get this to interact with the dynamically created datagridviews.

            int rowIndex = datagridview.Rows.Add();
            DataGridViewRow row = datagridview.Rows[rowIndex];
            row.Cells[0].Value = "5";
            datagridview.CurrentCell = row.Cells[0];
        }

I expect each link label to add a new row to the datagridview it was created with in the for loop. But I just don't how to code it.

在创建LinkLabelDataGridViewforeach循环中,可以将DataGridView的引用分配给LinkLabel -- 假设您在 Windows 窗体或 WPF 中执行此操作,则可以使用该控件的 Tag 属性:

linkLabel.Tag = datagridView;

然后,在点击事件中获取参考:

LinkLabel linkLabel = (LinkLabel)sender;
DataGridView datagridView = (DataGridView)linkLabel.Tag;

最新更新