C#for循环创建DataGridView并在Form上定位

时间:2017-01-24 16:28:17

标签: c# datagridview location

我正在尝试在Windows窗体(C#)上创建多个DataGridViews(简称DGV)。我已经简化了一些代码,比如SQL语句,因为那些东西已经有用 - 所以请忽略它。

使用特定输入时,此代码应生成6种不同的DGV;每个都一个接一个地放置。

代码列出了所有的DGV(我认为),但它们是相互叠加的。我找到每个DGV的代码不起作用。 DGV都位于我表格上的点(0,0)。

有人可以帮助指出我的错误吗?

private void getJobSetpoints(int xID)
    {

        int panelX = 422;
        int panelY = 12;

        int totalHeight = panelY;

        try
        {
            connection.Open();
            var con = new OleDbConnection(connection.ConnectionString);


            for (int i = 0; i <= 30; i++)
            {

                var select = @"SELECT .........";

                DataSet ds = new DataSet();
                var dataAdapter = new OleDbDataAdapter(select, con);
                dataAdapter.SelectCommand.Parameters.Add("@ID", OleDbType.Integer).Value = xID;
                dataAdapter.SelectCommand.Parameters.Add("@CATEGORY", OleDbType.Integer).Value = i;                                   
                dataAdapter.Fill(ds);


                //If data exists then create a DataGridView
                if (ds.Tables[0].Rows.Count > 0)
                {

                    DataGridView dgv = new DataGridView();                        
                    this.Controls.Add(dgv);
                    dgv.Location = new Point(panelX, totalHeight + 30);
                    dgv.Size = new Size(200, 200);
                    dgv.Dock = DockStyle.Fill;
                    dgv.Name = "dgv_" + i;

                    dgv.DataSource = ds.Tables[0];
                    dgv.Visible = true;

                    //Adjust the height of the DataGridView
                    int height = 40;
                    foreach (DataGridViewRow dr in dgv.Rows)
                    {
                        height += dr.Height;
                    }

                    dgv.Height = height;
                    totalHeight += height;                                            

                }
                else { }
            }

        }
        finally
        {
            connection.Close();
        }
    }

0 个答案:

没有答案