KeyDown和EditControlShowing事件用于动态创建的gridview

时间:2013-11-16 07:10:25

标签: c# winforms datagridview tabcontrol tabpage

在表单上,​​我将Tabcontrol放在没有tabpages和Declare Variable For DataGridview和TabPage

private DataGridView[] rtb = new DataGridView[100];
private TabPage[] tab = new TabPage[100];

之后我创建一个被称为用户的功能创建TabPages和 Gridview与基于文本框输入的列有多少用户想要

public void ctp(Int32 textbox)
{
    try
    {
        if (textbox > 10)
        {
            MessageBox.Show("You Exceed Limit");
        }
        else
        {
            int k = 0;
            int s = 0;
            tabControl2.TabPages.Clear();
            k = Convert.ToInt32(textBox1.Text);
            for (int i = 0; i < k; i++)
            {
                tab[i] = new TabPage();
                //Start Gridview
                rtb[i] = new System.Windows.Forms.DataGridView();
                rtb[i].Location = new System.Drawing.Point(0, 50);
                rtb[i].Size = new System.Drawing.Size(1020, 150);
                //ID Column
                rtb[i].Columns.Add("tr_id", "ID");
                rtb[i].Columns["tr_id"].ReadOnly = true;
                rtb[i].Columns["tr_id"].Width = 1;
                // Color Column
                rtb[i].Columns.Add("color_no", "Pantone No.");
                //Quantity Column
                rtb[i].Columns.Add("quantity", "Quantity");
                //Piece Weight Column
                rtb[i].Columns.Add("piece_weight", "Piece Weight");
                //Total Weight Carton
                rtb[i].Columns.Add("total_weight", "Total Weight");
                //Piece in Carton Column
                rtb[i].Columns.Add("pcs_carton", "Pcs/Carton");
                //No Of Carton Column
                rtb[i].Columns.Add("no_of_carton", "Total Cartons");
                //Unit Name Column
                rtb[i].Columns.Add("unit_name", "Unit Name");
                //Rate Column
                rtb[i].Columns.Add("rate", "Rate");
                //Amount Column
                rtb[i].Columns.Add("amount", "Amount");
                //Ship Qty Column
                rtb[i].Columns.Add("ship_qty", "Ship Qty.");
                //kdnr column
                rtb[i].Columns.Add("kdnr", "KDNR");
                //reference No Column
                rtb[i].Columns.Add("ref_no", "Reference No.");

                DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
                checkColumn.Name = "deleterow";
                checkColumn.HeaderText = "Delete Row";
                checkColumn.Width = 50;
                checkColumn.ReadOnly = false;
                checkColumn.FillWeight = 10; //if the datagridview is resized (on form resize) the checkbox won't take up too much; value is relative to the other columns' fill values
                rtb[i].Columns.Add(checkColumn);

                tab[i].Controls.Add(rtb[i]);
                tab[i].Location = new System.Drawing.Point(4, 22);
                tab[i].Name = "tab" + i.ToString();
                tab[i].Padding = new System.Windows.Forms.Padding(3);
                tab[i].Size = new System.Drawing.Size(400, 242);
                tab[i].Text = "Article" + i.ToString();
                tab[i].UseVisualStyleBackColor = true;
                tabControl2.TabPages.Add(tab[i]);

                //MessageBox.Show(""+tab[i].Text);
            }

        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

此函数调用TextBox KeyDown事件后

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
#region Calling Create TabPage Function
    try
    {
        if (e.KeyCode == Keys.Enter)
        {
            Int32 textbox = Convert.ToInt32(textBox1.Text);
            ctp(textbox);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
#endregion
}

此代码完美地工作我的问题是当我有2个gridview时 这将由用户动态创建,以便如何访问gridview 事件如KeyDown,EditControlShowing等等。

1 个答案:

答案 0 :(得分:3)

你想这样吗

 DataGridView[] rtb = new DataGridView[100];
             for (int i = 0; i < 1; i++)
             {
                                //Start Gridview
                 rtb[i] = new System.Windows.Forms.DataGridView();
                 rtb[i].Location = new System.Drawing.Point(0, 50);
                 rtb[i].Size = new System.Drawing.Size(1020, 150);
                 //ID Column
                 rtb[i].Columns.Add("tr_id", "ID");
                 rtb[i].Columns["tr_id"].ReadOnly = true;
                 rtb[i].Columns["tr_id"].Width = 1;
                 rtb[i].KeyDown += new KeyEventHandler(xKeyEvent);
                 this.Controls.Add(rtb[i]);
             }

按键事件

 private void xKeyEvent(object sender, KeyEventArgs e)
        {
            MessageBox.Show("hi");
        }