winform的TabContorl的TabPage動態新增滾動條
阿新 • • 發佈:2021-09-10
關鍵屬性AutoScrollMinSize
private int minWidth = 800; private int minHeight = 600; List<Form> listForm = new List<Form>(); private Assembly assembly = Assembly.GetExecutingAssembly(); // 獲取當前程式集 private void navMenu_MenuItemClick(string itemText, int menuIndex, int pageIndex) { string name = ""; string title = ""; foreach (TreeNode item in navMenu.Nodes[navMenu.SelectedIndex].Nodes) { if (item.Text == itemText) { name = item.Name; title = item.Text; break; } } //獲取螢幕除了工作列的高寬 int w = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width; //高度減去系統標題頭的高度 int h = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - 100; Sunny.UI.Common.ShowWaitForm(); try { //檢測當前FORM是否存在。 Form form = listForm.SingleOrDefault(a => a.Name == name); if (form != null && form.IsDisposed) { listForm.Remove(form); form = null; } if (form == null) { //新建page TabPage tabPage = new TabPage(); tabPage.Name = name + "_tab"; tabPage.Tag = name; tabPage.TabIndex = listForm.Count; tabPage.Text = title; tabPage.UseVisualStyleBackColor = true; tabPage.AutoScroll = true; tabPage.AutoScrollMinSize = new Size(w, h); mianTabContorl.Controls.Add(tabPage); //新建panel,網上聽說要新增pannel。可是沒用 //UIPanel uIPanel = new UIPanel(); //uIPanel.Font = new System.Drawing.Font("微軟雅黑", 9F); //uIPanel.Text = ""; //uIPanel.Dock = DockStyle.Fill; //uIPanel.AutoScroll = true; //uIPanel.MinimumSize = new Size(minWidth, minHeight); //tabPage.Controls.Add(uIPanel); //根據名稱空間.類名動態建立Form物件 form = (Form)assembly.CreateInstance("TestProduct." + name); form.MdiParent = this; form.FormBorderStyle = FormBorderStyle.None; //form.Parent = uIPanel; form.Parent = tabPage; //不可使用WindowState // form.WindowState = FormWindowState.Maximized; //設定最大高寬,最小高寬 form.MinimumSize = new Size(w, h); //填充pannel form.Dock = DockStyle.Fill; form.Show(); listForm.Add(form); mianTabContorl.SelectedTab = tabPage; } else { mianTabContorl.SelectedTab = GetTabPage(form.Name); } } catch (Exception ex) { Sunny.UI.Common.ShowErrorDialog("錯誤訊息:" + ex.Message); } finally { Sunny.UI.Common.HideWaitForm(); } } private TabPage GetTabPage(string name) { TabPage tb = null; foreach (TabPage item in mianTabContorl.TabPages) { if (item.Tag.ToString() == name) { tb = item; } } return tb; }