如何从尚未创建的控件创建事件

本文关键字:创建 事件 控件 | 更新日期: 2023-09-27 17:56:36

我的程序是创建datagridview程序,用户可以创建动态列,如行,列,面板(面板是面板的数量),因此用户也可以标记它,据我所知,我可以用CurrentCell.Style.BackColor标记单元格

当我生成数据网格视图时,我分配了它的名称,但是!!! 它不能使用新的 datagridvieweventhandler 命令,所以我不能对每个 datagridview 做任何事情

所以这是我的数据网格视图生成代码

    string[] Panelname = { "One","Two","Three","Four","Five"};
    for(i=0;i<Panelname.length;i++){
    Generate(Panelname[i],a,b)}
    DataGridView generate(string name,int columns,int rows)
    {
        int i;
        Control Gen;
        Control LB;          
        LB = new Label();
        LB.Text = "Panel : "+name;
        LB.Location = new Point(50 + 120 / (c - 1) + 900 / c , 315);
        LB.BackColor = Color.Silver;
        Gen = new DataGridView();
        Gen.Name = name.ToString();
        Gen.Size = new Size(900/c,300 );            
        Gen.Location = new Point(120 / (c ) + 900 / c, 0);            
        DataGridView CH = (DataGridView)Gen;           
        CH.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        CH.CellClick += new DataGridViewCellEventHandler(CH_CellClick);
        CH.Location = new Point(0+locate, 0);
        for (i = 1; i <= columns; i++)
        {
            CH.Columns.Add("", "");
        }
        for (i = 1; i < rows; i++)
        {
            CH.Rows.Add("", "");
        }
        dataGridView1.Controls.Add(LB);
        dataGridView1.Controls.Add(CH);
         return null;

    }

如何为动态创建的每个数据网格视图创建事件处理程序?

谢谢你的好意

如何从尚未创建的控件创建事件

创建数据网格视图。

for (int i = 0; i < 10; i++)
{
    DataGridView d = new DataGridView();
    d.MouseClick += dataGridView_MouseClick;
}

使用添加处理程序方法。

private void dataGridView_MouseClick(object sender, MouseEventArgs e)
{
    // Use sender to determine which datagridview fired the event
}

我发现的问题是,当我在数据网格视图中创建数据网格视图时,很难定义它是什么 您正在单击的数据网格视图,所以我已经陷入这个问题一段时间了

现在我找到了解决我的问题的方法,它在这里

for(i=0;i

    DataGridView generate2(string name, int columns, int rows,int form)
    {
        Control Gen;
        Control LB;
        int x = 1;
        int runcolumn = columns;
        int runrow = rows;
        int count=0;
        LB = new Label();
        LB.Text = "Panel : " + name;
        LB.Location = new Point(50 + 120 / (c - 1) + 900 / c, 320);
        LB.BackColor = Color.Silver;
        Gen = new DataGridView();
        Gen.Name = name.ToString();
        Gen.Location = new Point(120 / (c) + 900 / c, 0);
        DataGridView CH = (DataGridView)Gen;
        CH.RowTemplate.Height = 290 / rows;
        CH.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        CH.Size = new Size(900 / c, 300);
        CH.RowHeadersWidth = 10;
        CH.ColumnHeadersHeight = 10;            
        CH.Location = new Point(0 + locate, 0);

和********* CH。单击 += new EventHandler(control_click);*********** 这是我的英雄

    private void control_click(object sender, EventArgs e)
    {
        if (sender is DataGridView)
        {
            DataGridView A = (DataGridView)sender;
            textBox2.Text = A.CurrentCell.RowIndex.ToString();
            textBox1.Text = A.CurrentCell.ColumnIndex.ToString();
            textBox3.Text = A.Name.ToString();
        }
    }

在发送控件单击功能中,您可以找到控件的类型并强制转换它,因此无论您单击它的任何控件,您现在都可以设置它的功能!