給GroupBox動態添加一個按鈕,實現展開和折疊功能


需求:最近項目里有一個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);
                }
            }


        }
View Code

總結:我來說下思路,就比如頁面上有多個GroupBox,我進行Dock設定Top,然后多個GroupBox就會相鄰在一起。然后如果我GroupBox有需要展開按鈕我就調用擴張方法,該方法會根據我的默認動態新增一個按鈕在GroupBox右上角,然后通過點擊可以實現展開和折疊效果,有需要深入交流可以聯系我微信

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM