动态添加datagridview

 //加载xml数据
        private void buttonX1_Click(object sender, EventArgs e)
        {
            //读取xml
            //BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel1);
            // BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel2);
            BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\canyonlands.xml"), this.tabControlPanel3);
            //BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel4);
            //  BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel5);

            BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\water.xml"), this.tabControlPanel6);
            // BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel7);
            // BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel8);
            BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\building.xml"), this.tabControlPanel9);
        }

        /// <summary>
        /// 从xml中返回一个数组
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        protected List<string[]> GetObjectArrayList(string filePath)
        {

            XmlDataDocument doc = new XmlDataDocument();
            doc.Load(filePath);
            List<string[]> arrList = new List<string[]>();
            if (doc != null)
            {
                XmlNodeList nodeList = XmlOpre.FindNodeListByName("Object", doc.SelectSingleNode("ObjectList"));

                foreach (XmlNode node in nodeList)
                {
                    string[] result = {
                                          (node.SelectSingleNode("Symbol").InnerText+" "+ node.SelectSingleNode("No").InnerText),
                                            node.SelectSingleNode("objectID").InnerText ,
                                            node.SelectSingleNode("ObjectName").InnerText ,
                                            node.SelectSingleNode("ObjectType").InnerText
                                      };
                    arrList.Add(result);
                    //this.dataGridViewX1.Rows.Add(result, tabControlPanel3);
                }
            }
            return arrList;
        }

        /// <summary>
        /// 传入数组,动态生成datagridview
        /// </summary>
        /// <param name="arrList"></param>
        /// <param name="tbPanel"></param>
        protected void BuildDataGrid(List<string[]> arrList, DevComponents.DotNetBar.TabControlPanel tbPanel)
        {
            DevComponents.DotNetBar.Controls.DataGridViewX datagrid = new DevComponents.DotNetBar.Controls.DataGridViewX();
            System.Windows.Forms.DataGridViewTextBoxColumn symbol = new DataGridViewTextBoxColumn(); ;
            System.Windows.Forms.DataGridViewTextBoxColumn objectID = new DataGridViewTextBoxColumn(); ;
            System.Windows.Forms.DataGridViewTextBoxColumn objectName = new DataGridViewTextBoxColumn(); ;
            System.Windows.Forms.DataGridViewTextBoxColumn objectType = new DataGridViewTextBoxColumn();

            symbol.DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight;
            symbol.DataPropertyName = "Symbol";
            symbol.HeaderText = "序号";
            symbol.Width = 50;
            symbol.ReadOnly = true;

            objectID.DataPropertyName = "objectID";
            objectID.HeaderText = "**";
            objectID.Width = 50;
            objectID.ReadOnly = true;


            objectName.DataPropertyName = "ObjectName";
            objectName.HeaderText = "名称";
            objectName.Width = 80;
            objectName.ReadOnly = true;

            objectType.DataPropertyName = "ObjectName";
            objectType.HeaderText = "类型";
            objectType.Width = 80;
            objectType.ReadOnly = true;


            datagrid.AutoGenerateColumns = false;
            datagrid.Dock = tbPanel.Dock;
            datagrid.Columns.Add(symbol);
            datagrid.Columns.Add(objectID);
            datagrid.Columns.Add(objectName);
            datagrid.Columns.Add(objectType);
            datagrid.RowHeadersVisible = false;
            datagrid.CellContentDoubleClick += new DataGridViewCellEventHandler(datagrid_CellContentDoubleClick);
            foreach (string[] result in arrList)
            {
                datagrid.Rows.Add(result);
            }
            tbPanel.Controls.Add(datagrid);

        }


        /// <summary>
        /// datagridview双击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void datagrid_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            DevComponents.DotNetBar.Controls.DataGridViewX datagrid = (DevComponents.DotNetBar.Controls.DataGridViewX)sender;

            string Symbol = datagrid.Rows[e.RowIndex].Cells[0].Value.ToString();
            string ObjectName = datagrid.Rows[e.RowIndex].Cells[1].Value.ToString();
            string ObjectType = datagrid.Rows[e.RowIndex].Cells[2].Value.ToString();
            MessageBox.Show(Symbol + " " + ObjectName + " " + ObjectType);

        }

原文地址:https://www.cnblogs.com/qq4004229/p/2480714.html