Winform开发的应用,窗口大小改变时,不能自动缩放布局,在窗口初始化后添加以下代码就可以解决缩放问题

        public Form1()
        {
            InitializeComponent();
        }

        //初始窗体大小
        private Size m_szInit;
        //初始控件大小
        private Dictionary<Control, Rectangle> ControlSize = new Dictionary<Control, Rectangle>();

        protected override void OnLoad(EventArgs e)
        {
            //记录初始大小
            m_szInit = this.Size;
            this.GetInitSize(this);
            base.OnLoad(e);
        }

        private void GetInitSize(Control control)
        {
            //记录控件大小
            foreach (Control item in control.Controls)
            {
                ControlSize.Add(item, new Rectangle(item.Location, item.Size));
                this.GetInitSize(item);
            }
        }

        protected override void OnResize(EventArgs e)
        {
            //计算当前大小和初始大小的比例
            float fx = (float)this.Width / m_szInit.Width;
            float fy = (float)this.Height / m_szInit.Height;
            foreach (var item in ControlSize)
            {
                item.Key.Left = (int)(item.Value.Left * fx);
                item.Key.Top = (int)(item.Value.Top * fy);
                item.Key.Width = (int)(item.Value.Width * fx);
                item.Key.Height = (int)(item.Value.Height * fy);
            }
            base.OnResize(e);
        }
如果觉得我的文章对你有用,请随意赞赏