C# 生成动态文本框和标签

C# 生成动态文本框和标签,c#,C#,我想在C#中的datagridview中添加列时生成动态文本框和标签。 我还希望稍后编写一个SQL查询,将新生成的文本框作为参数/新列名。发生的错误为“参数超出范围异常未处理” 请帮忙 public void CreateLabels() { Label lb = new Label(); this.Controls.Add(lb); int p= dataGridView1.ColumnCount; for (int k

我想在C#中的datagridview中添加列时生成动态文本框和标签。 我还希望稍后编写一个SQL查询,将新生成的文本框作为参数/新列名。发生的错误为“参数超出范围异常未处理”

请帮忙

public void CreateLabels()
    {
        Label lb = new Label();
        this.Controls.Add(lb);
        int p= dataGridView1.ColumnCount;
        for (int k = p; k <= dataGridView1.ColumnCount; k++)
        {
            for (int z =p; z <= dataGridView1.ColumnCount; z++)
            {
                dataGridView1.Refresh();
                lb.Text = dataGridView1.Columns[z++].HeaderText;
            }
            lb.Show();
            lb.Visible = true;
        }
        lb.Location = new Point(m,n=n+25);
        lb.Width = 199;
        lb.Height = 20;
    }
    public void CreateTextBoxes()
    {
        TextBox tb = new TextBox();
        this.Controls.Add(tb);
        for (int i = 5; i <= dataGridView1.ColumnCount; i++)
        {
            dataGridView1.Refresh();
            tb.Name = "textBox" + i;
            MessageBox.Show(tb.Name);
        }
        tb.Location = new Point(x, y = y + 25);
        tb.Show();
        tb.Visible = true;         
    }*/

    //Below  method is used to get data in datagridview1 and to reflect in runtime text boxes and labels;the visible property is kept false 

    /*private void displayRec()
    {
        try
        {
            string str = System.Environment.MachineName;
            SqlConnection sconn = new SqlConnection("Data Source='" + str + "';Initial Catalog=main;Integrated Security=True");
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter("Select * from invent", sconn);
            da.Fill(dt);

            dataGridView1.DataSource = dt.DefaultView;
            //dataGridView1.Refresh();
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());
        }
    }
public void CreateLabels()
{
标签lb=新标签();
此.Controls.Add(lb);
int p=dataGridView1.ColumnCount;

对于(int k=p;k老实说,我不理解你的循环的概念。它们有相同的条件,你从不使用“k”;

但是,这两个循环都从最后一列+1开始;在lb.Text的赋值中,您试图获取不存在的列的HeaderText。这就是为什么出现超出范围的异常。

也许您可以向我们显示一些代码。@user2038924欢迎,我想您最好在分配的循环中修改代码在函数开始时创建的同一标签的文本属性的结果,然后显示该标签并使其一次又一次可见。。。