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

时间:2015-06-17 08:34:52

标签: c# vb.net winforms datagridview

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

当我生成datagridview时,我已经指定了它的名字但是!!!!它无法使用新的datagridvieweventhandler命令,所以我不能对每个datagridview做任何事情

所以这是我的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;


    }

如何为每个动态创建它的datagridview创建事件处理程序?

谢天谢地

2 个答案:

答案 0 :(得分:1)

创建您的datagridview。

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
}

答案 1 :(得分:0)

我发现的问题是当我在datagridview中创建datagridview时很难定义你点击的datagridview,所以我已经陷入了这个问题一段时间

现在我找到了解决问题的方法,现在就是

为(I = 0;我

    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.Click + = 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();
        }
    }

在发送控件点击功能中,您可以找到您的控件的类型并进行投射,因此无论您点击它的控件,您都可以立即设置它的功能!

相关问题