winform自定义panel控件

有很多时候,开发winform,系统给的控件往往不能满足需求。所以,我们需要自己的写自己的控件来使用。下面通过具体的例子来讲解,怎么通过继承控件来写出适用自己的控件。

自定义fowllowpanel控件:

在实现动态布局的时候,很多时候需要生成一个控件自动的排列在上一个控件之下,这个时候我们就可以通过继承panel容器来实现。

代码如下:

class PcFollowPanel:Panel
    {
        //控件间隔
        protected int controlSpace;

        public PcFollowPanel()
        {


        }


        public PcFollowPanel(int controlSpace)
        {
            this.controlSpace = controlSpace;
        }


        ///


        /// 计算控件中子控件宽度,不包括最后一个控件的下面的空格
        ///

        ///
        public int GetChildsWidth()
        {
            int width = 0;
            foreach (Control c in this.Controls)
            {
                if (width < c.Width)
                {
                    width = c.Width;
                }
            }
            return width;
            
        }


        ///
        /// 计算控件中子控件长度,不包括最后一个控件的下面的空格
        ///

        ///
        public int GetChildsLenth()
        {
            int lenth = 0;
            foreach (Control c in this.Controls)
            {
                lenth = lenth + c.Height + controlSpace;
            }
            return lenth;
        }


        ///
        /// 添加控件,自动排列
        ///

        ///
        public void AddControl(Control c)
        {
            c.Location = new Point(0, GetChildsLenth() + controlSpace);
            this.Controls.Add(c);
            this.Size = new Size(GetChildsWidth(), GetChildsLenth());
        }


    }

你可能感兴趣的:(winform)