需求:最近項目里有一個Winfrom工具需要擴展,然后就找到了我,我完成了一個頁面數據太多的下拉滾動和折疊等功能
主要:談談怎么動態給GroupBox新增一個按鈕吧
代碼實現

/// <summary>設置GroupBox添加伸展按鈕 /// xun-yu.she|2020-08-05 /// </summary> /// <param name="gb"></param> public static void SetGroupBoxAddButtonExtend(this GroupBox gb) { var btnGroupBox = new Button(); btnGroupBox.Text = "折疊"; btnGroupBox.Click += new EventHandler(btnGroupBox_Click); btnGroupBox.Size = new System.Drawing.Size(42, 22); btnGroupBox.UseVisualStyleBackColor = true; btnGroupBox.Tag = gb; btnGroupBox.Top = 10; btnGroupBox.Left = gb.Width - 70; btnGroupBox.BringToFront(); gb.Controls.Add(btnGroupBox); } static void btnGroupBox_Click(object sender, EventArgs e) { var btnGroupBox = sender as Button; if (btnGroupBox.Tag != null) { var groupBox = btnGroupBox.Tag as GroupBox; if (btnGroupBox.Text == "展開") { btnGroupBox.Text = "折疊"; groupBox.Height = Convert.ToInt32(groupBox.Tag); } else { if (groupBox.Tag == null) { groupBox.Tag = groupBox.Height; } btnGroupBox.Text = "展開"; groupBox.Height = Convert.ToInt32(50); } } }
總結:我來說下思路,就比如頁面上有多個GroupBox,我進行Dock設定Top,然后多個GroupBox就會相鄰在一起。然后如果我GroupBox有需要展開按鈕我就調用擴張方法,該方法會根據我的默認動態新增一個按鈕在GroupBox右上角,然后通過點擊可以實現展開和折疊效果,有需要深入交流可以聯系我微信