Winform控件大小位置随窗体变化

1.插入以下方法

复制代码
        /// <summary>
        /// 读取控件的大小位置属性,保存在Tag里面
        /// </summary>
        /// <param name="control"></param>
        void SetTag(Control control)
        {
            foreach (Control item in control.Controls)
            {
                item.Tag = item.Left.ToString() + "," + item.Top.ToString() + "," + item.Width.ToString() + "," + item.Height.ToString()+",";
                if (item.HasChildren)
                {
                    SetTag(item);
                }
            }
        }
        /// <summary>
        /// 设置控件的大小位置
        /// </summary>
        /// <param name="control"></param>
        /// <param name="scaleX"></param>
        /// <param name="scaleY"></param>
        void SetContrlos(Control control,double scaleX,double scaleY)
        {
            foreach (Control item in control.Controls)
            {
                string stag = (string)item.Tag;
                if (stag == null) return;
                string[] strings = stag.Split(',');
                item.Location = new Point((int)(double.Parse(strings[0]) * scaleX), (int)(double.Parse(strings[1]) * scaleY));
                item.Size = new Size((int)(double.Parse(strings[2]) * scaleX), (int)(double.Parse(strings[3]) * scaleY));
               if (item.HasChildren)
                {
                    SetContrlos(item,scaleX,scaleY);
                }
            }
        }
复制代码

 

2.在窗体的构造函数和大小事件中插入代码

复制代码
        public Form1()
        {
            InitializeComponent();
            this.Tag = this.Width.ToString()+","+this.Height.ToString();
            SetTag(this);
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            string stag=(string)this.Tag;
            if (stag == null) return;
            string[] strings=stag.Split(',');
            double x = (double)this.Width / Convert.ToDouble(strings[0]);
            double y = (double)this.Height / Convert.ToDouble(strings[1]);
            SetContrlos(this,x,y);
          
        }
复制代码

 

posted @   奔赴山海Y  阅读(415)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示