/// <summary> /// 初始化窗体 /// </summary> /// <param name="SourceFormName">窗体Name</param> private void InitForm(string SourceFormName) { string smainSql = $@"select * from t_program where fname ='{SourceFormName}'"; DataTable dtProgramInfo = DBHelper.GetDataTable(smainSql); DataRow drProgramInfo = dtProgramInfo.Rows[0]; string smainSql1 = $"select * from (\r\n {drProgramInfo["fSql"] + ""}\r\n)t1 where 1=1"; DataTable dtMain = DBHelper.GetDataTable(smainSql1); dtMain.TableName = drProgramInfo["fTable"] + ""; dtMain.Namespace = smainSql1; ComponentPanel panel = new ComponentPanel(true); ComponentDataGrid grid = panel.InitializeNewTabPage(drProgramInfo["fCNName"] + "", SourceFormName, dtMain); panel.Dock = DockStyle.Top; MainTab.SelectedTab.Controls.Add(panel); panel.BringToFront(); string srelationSql = $@"select * from T_FormRelationships with(nolock) where fmainname = '{SourceFormName}'"; DataTable dtRelationShip = DBHelper.GetDataTable(srelationSql); //无从属关系 if (dtRelationShip == null || dtRelationShip.Rows.Count == 0) { panel.Dock = DockStyle.Fill; EventHelper eventHelperOnly = new EventHelper(); eventHelperOnly.BindingCellClickEvent(grid); return; } SplitterControl splitter = new SplitterControl(); MainTab.SelectedTab.Controls.Add(splitter); splitter.Dock = DockStyle.Top; splitter.BringToFront(); RecursiveForm(grid, dtRelationShip, SourceFormName); #region 设置高度 int ictrlCount = MainTab.SelectedTab.Controls.OfType <ComponentPanel>().Count(); int ipageHeigh = MainTab.SelectedTab.Height; int iResult = ipageHeigh / ictrlCount; foreach (Control ctrl in MainTab.SelectedTab.Controls) { if (!(ctrl is ComponentPanel)) { continue; } ComponentPanel frm = ctrl as ComponentPanel; frm.Height = iResult; } #endregion #region 点击事件绑定 EventHelper eventHelper = new EventHelper(); eventHelper.BindingCellClickEvent(grid); #endregion }