精华内容
下载资源
问答
  • 转载,原文链接改进C# ...public partial class Form1 : Form {在此粘贴代码},即可实现控件自适应窗口的效果 //默认主窗口类名称为Form1,在此添加代码 public partial class Form1 : Form { public Form1() { ...

    转载,原文链接改进C# WinForm窗体及其控件的自适应
    按下面的四步走,直接将代码复制到
    public partial class Form1 : Form {在此粘贴代码},即可实现控件自适应窗口的效果

    //默认主窗口类名称为Form1,在此添加代码
    public partial class Form1 : Form
        {
        	public Form1()
            {
                InitializeComponent();
            }
    		
    		//从这里开始复制下面的代码!!!
    		//第一步,定义控件自适应窗口类AutoSizeFormClass
            class AutoSizeFormClass
            {
                public struct controlRect
                {
                    public int Left;
                    public int Top;
                    public int Width;
                    public int Height;
                }
                
                public List<controlRect> oldCtrl = new List<controlRect>();
                int ctrlNo = 0;
     			
     			//重要方法一:记录窗体和其控件的初始位置和大小controllInitializeSize()
                public void controllInitializeSize(Control mForm)
                {
                    controlRect cR;
                    cR.Left = mForm.Left; cR.Top = mForm.Top; cR.Width = mForm.Width; cR.Height = mForm.Height;
                    oldCtrl.Add(cR);
                    AddControl(mForm);
                }
                private void AddControl(Control ctl)
                {
                    foreach (Control c in ctl.Controls)
                    {  
                        controlRect objCtrl;
                        objCtrl.Left = c.Left; objCtrl.Top = c.Top; objCtrl.Width = c.Width; objCtrl.Height = c.Height;
                        oldCtrl.Add(objCtrl);                   
                        if (c.Controls.Count > 0)
                            AddControl(c);
                    }
                }
               
                //重要方法二:控件自适应大小方法controlAutoSize()
                public void controlAutoSize(Control mForm)
                {
                    if (ctrlNo == 0)
                    { 
                        controlRect cR;                    
                        cR.Left = 0; cR.Top = 0; cR.Width = mForm.PreferredSize.Width; cR.Height = mForm.PreferredSize.Height;
                        oldCtrl.Add(cR);
                        AddControl(mForm);
                    }
                    float wScale = (float)mForm.Width / (float)oldCtrl[0].Width;
                    float hScale = (float)mForm.Height / (float)oldCtrl[0].Height;
                    ctrlNo = 1;
                    AutoScaleControl(mForm, wScale, hScale);
                }
                private void AutoScaleControl(Control ctl, float wScale, float hScale)
                {
                    int ctrLeft0, ctrTop0, ctrWidth0, ctrHeight0;               
                    foreach (Control c in ctl.Controls)
                    {                
                        ctrLeft0 = oldCtrl[ctrlNo].Left;
                        ctrTop0 = oldCtrl[ctrlNo].Top;
                        ctrWidth0 = oldCtrl[ctrlNo].Width;
                        ctrHeight0 = oldCtrl[ctrlNo].Height;
                        
                        c.Left = (int)((ctrLeft0) * wScale);
                        c.Top = (int)((ctrTop0) * hScale);//
                        c.Width = (int)(ctrWidth0 * wScale);
                        c.Height = (int)(ctrHeight0 * hScale);//
                        ctrlNo++;
                        if (c.Controls.Count > 0)
                            AutoScaleControl(c, wScale, hScale);
    
                        if (ctl is DataGridView)
                        {
                            DataGridView dgv = ctl as DataGridView;
                            Cursor.Current = Cursors.WaitCursor;
    
                            int widths = 0;
                            for (int i = 0; i < dgv.Columns.Count; i++)
                            {
                                dgv.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);  // 自动调整列宽  
                                widths += dgv.Columns[i].Width;   // 计算调整列后单元列的宽度和                       
                            }
                            if (widths >= ctl.Size.Width)  // 如果调整列的宽度大于设定列宽  
                                dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;  // 调整列的模式 自动  
                            else
                                dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;  // 如果小于 则填充  
    
                            Cursor.Current = Cursors.Default;
                        }
                    }
                }
            }
    
            //第二步,实例化上面定义的类
            AutoSizeFormClass asc = new AutoSizeFormClass();
            
            //第三步,初始化窗口时记录控件的大小和位置
            private void Form1_Load(object sender, EventArgs e)
            {
                asc.controllInitializeSize(this);
            }
    
            //第四步,主窗口大小发生变化触发的事件
            private void Form1_SizeChanged(object sender, EventArgs e)
            {
                asc.controlAutoSize(this);
            }
        }
    
    展开全文
  • C# winform 控件自适应窗体大小

    千次阅读 2018-07-12 17:36:55
     { //**放在这里,是先记录控件的子控件,后记录控件本身    controlRect objCtrl;  objCtrl.Left = c.Left;   objCtrl.Top = c.Top;   objCtrl.Width = c.Width;  objCtrl.Height = c.Height;  oldCtrl....
    using System;
    
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;


    namespace videoBox.lib
    {
       public class AutoSizeFormClass
        {
         
            public struct controlRect
            {
                public int Left;
                public int Top;
                public int Width;
                public int Height;
            }
            public List<controlRect> oldCtrl = new List<controlRect>();
            int ctrlNo = 0;//1;
            public void controllInitializeSize(Control mForm)
            {
                    controlRect cR;
                    cR.Left = mForm.Left;
                    cR.Top = mForm.Top;
                    cR.Width = mForm.Width; 
                    cR.Height = mForm.Height;
                    oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可
                    AddControl(mForm);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
                 //this.WindowState = (System.Windows.Forms.FormWindowState)(2);//记录完控件的初始位置和大小后,再最大化
                //0 - Normalize , 1 - Minimize,2- Maximize
            }
            private void AddControl(Control ctl)
            {
                foreach (Control c in ctl.Controls)
                {  //**放在这里,是先记录控件的子控件,后记录控件本身
                  
                    controlRect objCtrl;
                    objCtrl.Left = c.Left; 
                    objCtrl.Top = c.Top; 
                    objCtrl.Width = c.Width;
                    objCtrl.Height = c.Height;
                    oldCtrl.Add(objCtrl);
                  
                    if (c.Controls.Count > 0)
                        AddControl(c);
                }
            }


         
            public void controlAutoSize(Control mForm)
            {
                if (ctrlNo == 0)
                {
                    controlRect cR;
             
                    cR.Left = 0; cR.Top = 0; cR.Width = mForm.PreferredSize.Width; cR.Height = mForm.PreferredSize.Height;


                    oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可
                    AddControl(mForm);//窗体内其余控件可能嵌套其它控件(比如panel),故单独抽出以便递归调用
                }
                float wScale = (float)mForm.Width / (float)oldCtrl[0].Width;//新旧窗体之间的比例,与最早的旧窗体
                float hScale = (float)mForm.Height / (float)oldCtrl[0].Height;//.Height;
                ctrlNo = 1;//进入=1,第0个为窗体本身,窗体内的控件,从序号1开始
                AutoScaleControl(mForm, wScale, hScale);
            }
            private void AutoScaleControl(Control ctl, float wScale, float hScale)
            {
                int ctrLeft0, ctrTop0, ctrWidth0, ctrHeight0;
                //int ctrlNo = 1;//第1个是窗体自身的 Left,Top,Width,Height,所以窗体控件从ctrlNo=1开始
                foreach (Control c in ctl.Controls)
                {
                    if (!(c is Button))
                    {
                        //**放在这里,是先缩放控件的子控件,后缩放控件本身
                        //if (c.Controls.Count > 0)
                        //   AutoScaleControl(c, wScale, hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
                        ctrLeft0 = oldCtrl[ctrlNo].Left;
                        ctrTop0 = oldCtrl[ctrlNo].Top;
                        ctrWidth0 = oldCtrl[ctrlNo].Width;
                        ctrHeight0 = oldCtrl[ctrlNo].Height;
                      
                        c.Left = (int)((ctrLeft0) * wScale);//新旧控件之间的线性比例。控件位置只相对于窗体,所以不能加 + wLeft1
                        c.Top = (int)((ctrTop0) * hScale);//
                        c.Width = (int)(ctrWidth0 * wScale);//只与最初的大小相关,所以不能与现在的宽度相乘 (int)(c.Width * w);
                        c.Height = (int)(ctrHeight0 * hScale);//
                        ctrlNo++;//累加序号
                        //**放在这里,是先缩放控件本身,后缩放控件的子控件
                        if (c.Controls.Count > 0)
                            AutoScaleControl(c, wScale, hScale);
                    }
                    }
            }
        }

    }

     ---------------------------------------------------------------------------------------------------- 

    AutoSizeFormClass asc = new AutoSizeFormClass();

      private void testPalyer_SizeChanged(object sender, EventArgs e)
            {
                asc.controlAutoSize(this);
            }

    转自:https://blog.csdn.net/lj22377/article/details/48595815
    展开全文
  • 本来不爱鸡汤,今天说两句:winform开发有一个缺陷就是不能实现界面的自适应,切换不同的分辨率,或者窗体大小改变就会出现窗体显示不全的问题。这就需要自己写一个方法来实现不同情况下的自适应,WPF比Winform的一...

    今天给大家上一道硬菜。本来不爱鸡汤,今天说两句:winform开发有一个缺陷就是不能实现界面的自适应,切换不同的分辨率,或者窗体大小改变就会出现窗体显示不全的问题。这就需要自己写一个方法来实现不同情况下的自适应,WPF比Winform的一个显著优势就是可以实现自适应。今天给大家一个可以实现自适应的方案。(本篇博客代码,为本人,在本地调试通过后,手敲到博客中,难免出现敲错的状况,勿喷。代码里面的注释是比较清楚的)

    效果图:

     

    调整大小后

    新建一个AutoSizeFormClass.cs文件

    class AutoSizeFormClass
    {
        //1.声明一个结构体,记录窗体和控件的基本属性
        public struct controlRect
        {
            public string Name;
            public int Left;
            public int Top;
            public int Width;
            public int Height;
            public float FontSize;
            public FontFamily FontFamily;
        }
        //2.声明一个集合记录所有控件的属性
        //使用控件的Name作为key
        Dictionary<string,controlRect> dic=new Dictionary<string,controlRect>();
        int ctrNo=0;
        //这里是你开发环境下的分辨率
        private int ScW=1920;
        private int ScH=1080;
        //记录窗体是不是第一次加载的标记 0:第一次加载  1:重复加载
        private int IsFirstLoad=0;
        //窗体的名称
        private string FrmName=string.Empty;
        //3.创建两个函数
        //采用递归的方法将控件包含的所有控件属性记录下来(结构体的每一个属性都需要赋值)
        private void AddControl(Control ctl)
        {
            foreach(Control c in ctl.Controls)
            {
                GetCtrParameter(c);
                //使用递归函数先记录控件本身,后记录控件包含的子控件
                if(c.Controls.Count>0)
                {
                    AddControl(c);
                }
            }
        }
        //获取控件的所有属性
        private void GetCtrParameter(Control mForm)
        {
            controlRect cr;
            cr.Name=mForm.Name;
            cr.Left=mForm.Left;
            cr.Top=mForm.Top;
            cr.Width=mForm.Width;
            cr.Height=mForm.Height;
            cr.FontSize=mForm.Font.Size;
            cr.FontFamily=mForm.Font.FontFamily;
            dic.Add(cr.Name,cr);
        }
    
        //4.控件自适应大小
        public void controlAutoSize(Control mForm)
        {
            FrmName=mForm.Name;
            float wScale=0;
            float hScale=0;
            //因为有些控件和DataGridView的子空间加载时间较长,所以在Form1_SizeChanged中,
            //记录控件的原始大小和位置,第一次加载的时候先根据和开发环境的像素比例绘制窗体                
            if(IsFirstLoad==0&&ctrNo==0)
            {
                //获取当前的像素
                int SH=Screen.PrimaryScreen.Bounds.Height;
                int SW=Screen.PrimaryScreen.Bounds.Width;
                //和开发环境的像素相比获取对应的比值
                wScale=(float)SH/(float)ScH;
                hScale=(float)SW/(float)ScW;
                controlRect cR;
                cR.Name=mForm.Name;
                cR.Left=mForm.Left;
                cR.Top=mForm.Top;
                cR.Width=mForm.Width;
                cR.Height=mForm.Height;
                cR.FontSize=mForm.Font.Size;
                cR.FontFamily=mForm.Font.FontFamily;
                dic.Add(cR.Name,cR);//第一个为窗体本身
                AddControl(mForm);//递归获取所有窗体基础信息
                AutoScaleControl(mForm,wScale,hScale);//这里其实是第一次构造窗体
                IsFirstLoad=1;            
            }
            //这里是改变窗体大小时重新设置窗体的属性
            else
            {
                //新旧窗体之间的高和长的比例,与第一次加载的信息比较
                wScale=(float)mForm.Width/dic[FrmName].Width;
                hScale=(float)mForm.Height/dic[FrmName].Height;
                //将ctrNo设为1,代表为控件而非窗体
                ctrNo=1;
                //设置控件以及其嵌套的控件的比例大小,使用递归调用
                AutoScaleControl(mForm,wScale,hScale);
            }
        }
        //递归进行自适应调整
        private void AutoScaleControl(Control ctl,float wScale,float hScale)
        {
            int ctrLeft0,ctrTop0,ctrWidth0,ctrHeight0;
            float fontSize;
            FontFamily fontFamily;
            foreach(Control c in ctl.Controls)
            {
                string ctrName=c.Name;
                ctrLeft0=dic[ctrName].Left;
                ctrTop0=dic[ctrName].Top;
                ctrWidth0=dic[ctrName].Width;
                ctrHeight0=dic[ctrName].Height;
                fontSize=dic[ctrName].FontSize;
                fontFamily=dic[ctrName].FontFamily;
                //新旧控件之间的线性比例,字体大小依据高度转换
                c.Left=(int)(ctrLeft0*wScale);
                c.Top=(int)(ctrTop0*hScale);
                c.Width=(int)(ctrWidth0*wScale);
                c.Height=(int)(ctrHeight0*hScale);
                c.Font=new Font(fontFamily,fontSize*hScale);
                ctrNo++;
                //先缩放控件本身,后缩放控件的子控件
                if(c.Controls.Count>0)
                {
                    AutoScaleControl(c,wScale,hScale);
                }
                //dataGridview特殊处理
                if(c is DataGridView)
                {
                    DataGridView dgv=c as DataGridView;
                    Cursor.Current=Cursors.WaitCursor;
                    int widths=0;
                    for(int i=0;i<dgv.Columns.Count-1;i++)
                    {
                        //自动调整列宽
                        dgv.AutoResizeColumn(i,DataGridViewAutoSizeColumnMode.AllCells);
                        widths+=dgv.Columns[i].Width;
                    }
                    //如果调整列的宽度大于设定宽度
                    if(widths>ctl.Size.Width)
                    {
                                    dgv.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.DisplayedCells;//调整列的模式
    
                    }
                    else
                    {
                        dgv.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Fill;//如果小于则填充
                       
                    }
                     Cursor.Current=Cursors.Default;
                }
            }
        }
    
    }
    

    添加一个Form1,在SizeChanged方法添加,不要在load中添加

    public partial class Form1:Form
    {
        private AutoSizeFormClass asc=new AutoSizeFormClass();
        public Form1()
        {
            InitializeComponent();
        } 
        private void Form1_SizeChanged(object sender,EventArgs e)
        {
            asc.controlAutoSize(this);
        }
    }

     

     

     

    展开全文
  • C# Winform 控件自适应

    2016-03-03 16:16:00
     //(3.2)控件自适应大小,  public void controlAutoSize(Control mForm)  {  if (ctrlNo == 0)  { //*如果在窗体的Form1_Load中,记录控件原始的大小和位置,正常没有问题,但要加入皮肤就会出现问题,...

    核心类:AutoSizeFormClass


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using System.Net.Sockets;
    using System.Net;
    
    namespace ScrollClient
    {
        public class AutoSizeFormClass
        {
            //(1).声明结构,只记录窗体和其控件的初始位置和大小。
            public struct controlRect
            {
                public int Left;
                public int Top;
                public int Width;
                public int Height;
            }
            //(2).声明 1个对象
            //注意这里不能使用控件列表记录 List nCtrl;,因为控件的关联性,记录的始终是当前的大小。
            //      public List oldCtrl= new List();//这里将西文的大于小于号都过滤掉了,只能改为中文的,使用中要改回西文
            public List<controlRect> oldCtrl = new List<controlRect>();
            int ctrlNo = 0;//1;
            //(3). 创建两个函数
            //(3.1)记录窗体和其控件的初始位置和大小,
            public void controllInitializeSize(Control mForm)
            {
                controlRect cR;
                cR.Left = mForm.Left; cR.Top = mForm.Top; cR.Width = mForm.Width; cR.Height = mForm.Height;
                oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可
                AddControl(mForm);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
                //this.WindowState = (System.Windows.Forms.FormWindowState)(2);//记录完控件的初始位置和大小后,再最大化
                //0 - Normalize , 1 - Minimize,2- Maximize
            }
            private void AddControl(Control ctl)
            {
                foreach (Control c in ctl.Controls)
                {  //**放在这里,是先记录控件的子控件,后记录控件本身
                    //if (c.Controls.Count > 0)
                    //    AddControl(c);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
                    controlRect objCtrl;
                    objCtrl.Left = c.Left; objCtrl.Top = c.Top; objCtrl.Width = c.Width; objCtrl.Height = c.Height;
                    oldCtrl.Add(objCtrl);
                    //**放在这里,是先记录控件本身,后记录控件的子控件
                    if (c.Controls.Count > 0)
                        AddControl(c);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
                }
            }
            //(3.2)控件自适应大小,
            public void controlAutoSize(Control mForm)
            {
                if (ctrlNo == 0)
                { //*如果在窗体的Form1_Load中,记录控件原始的大小和位置,正常没有问题,但要加入皮肤就会出现问题,因为有些控件如dataGridView的的子控件还没有完成,个数少
                    //*要在窗体的Form1_SizeChanged中,第一次改变大小时,记录控件原始的大小和位置,这里所有控件的子控件都已经形成
                    controlRect cR;
                    //  cR.Left = mForm.Left; cR.Top = mForm.Top; cR.Width = mForm.Width; cR.Height = mForm.Height;
                    cR.Left = 0; cR.Top = 0; cR.Width = mForm.PreferredSize.Width; cR.Height = mForm.PreferredSize.Height;
    
                    oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可
                    AddControl(mForm);//窗体内其余控件可能嵌套其它控件(比如panel),故单独抽出以便递归调用
                }
                float wScale = (float)mForm.Width / (float)oldCtrl[0].Width;//新旧窗体之间的比例,与最早的旧窗体
                float hScale = (float)mForm.Height / (float)oldCtrl[0].Height;//.Height;
                ctrlNo = 1;//进入=1,第0个为窗体本身,窗体内的控件,从序号1开始
                AutoScaleControl(mForm, wScale, hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
            }
            private void AutoScaleControl(Control ctl, float wScale, float hScale)
            {
                int ctrLeft0, ctrTop0, ctrWidth0, ctrHeight0;
                //int ctrlNo = 1;//第1个是窗体自身的 Left,Top,Width,Height,所以窗体控件从ctrlNo=1开始
                foreach (Control c in ctl.Controls)
                { //**放在这里,是先缩放控件的子控件,后缩放控件本身
                    //if (c.Controls.Count > 0)
                    //   AutoScaleControl(c, wScale, hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
                    ctrLeft0 = oldCtrl[ctrlNo].Left;
                    ctrTop0 = oldCtrl[ctrlNo].Top;
                    ctrWidth0 = oldCtrl[ctrlNo].Width;
                    ctrHeight0 = oldCtrl[ctrlNo].Height;
                    //c.Left = (int)((ctrLeft0 - wLeft0) * wScale) + wLeft1;//新旧控件之间的线性比例
                    //c.Top = (int)((ctrTop0 - wTop0) * h) + wTop1;
                    c.Left = (int)((ctrLeft0) * wScale);//新旧控件之间的线性比例。控件位置只相对于窗体,所以不能加 + wLeft1
                    c.Top = (int)((ctrTop0) * hScale);//
                    c.Width = (int)(ctrWidth0 * wScale);//只与最初的大小相关,所以不能与现在的宽度相乘 (int)(c.Width * w);
                    c.Height = (int)(ctrHeight0 * hScale);//
                    ctrlNo++;//累加序号
                    //**放在这里,是先缩放控件本身,后缩放控件的子控件
                    if (c.Controls.Count > 0)
                        AutoScaleControl(c, wScale, hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用
    
                    if (ctl is DataGridView)
                    {
                        DataGridView dgv = ctl as DataGridView;
                        Cursor.Current = Cursors.WaitCursor;
    
                        int widths = 0;
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            dgv.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);  // 自动调整列宽  
                            widths += dgv.Columns[i].Width;   // 计算调整列后单元列的宽度和                       
                        }
                        if (widths >= ctl.Size.Width)  // 如果调整列的宽度大于设定列宽  
                            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;  // 调整列的模式 自动  
                        else
                            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;  // 如果小于 则填充  
    
                        Cursor.Current = Cursors.Default;
                    }
                }
    
    
            }
        }
    }


    实例:

    private AutoSizeFormClass asc = new AutoSizeFormClass();//控件自适应
    
    private void Form1_Load(object sender, EventArgs e)
    {
          asc.controllInitializeSize(this);//控件自适应
    }
     
    private void Form1_SizeChanged(object sender, EventArgs e)
    {
        PanelVisSet(false, false);//解决控件闪烁问题
        asc.controlAutoSize(this);//控件自适应
        PanelVisSet(true, true);//解决控件闪烁问题
    }
    
    private void PanelVisSet(Boolean pb2, Boolean pb3)
    {
         this.panel2.Visible = pb2;
         this.panel3.Visible = pb3;
    }


    转载于:https://my.oschina.net/milu6852/blog/630453

    展开全文
  • 明儿在放,先睡 转载于:https://www.cnblogs.com/javabin/archive/2011/09/26/2192402.html
  • C#Winform 实现控件自适应父容器大小 在日常开发中经常遇到控件不能随着父容器大小的改变而且自动改变控件的所在位置和大小。以下是实现的代码 `/// <summary> /// 根据父容器实现控件自适应大小位置 /// &...
  • 窗体自适应,统计原始窗体的位置和大小;缩放后Resize通过计算主窗体的大小,计算出长宽伸缩比例,然后再计算出来内部控件的起始点和长宽,过程通过递归完成,简单易行!
  • 第二步:新建集合用于存储对应控件结构的属性 第三步:将控件的属性添加到集合中 第四步:计算出放大和缩小的比例 第五步:输出实际的控件大小 参考:https://blog.csdn.net/hy6688_/article/details/19431097 using...
  • 自己写的winform窗体自适应大小代码,代码比较独立,很适合贴来贴去不会对原有程序造成影响,可以直接继承此类或者把代码复制到自己的代码里面直接使用 借鉴了网上的一些资料,最后采用重写WndProc方法,这样可以...
  • 之前写过winform的窗体自适应,不过原生控件没有圆角,最近在使用Dskin开发,所以就写了可以让窗体和控件大小,位置,字体,圆角一起自适应的方案。 调用时 在需要自适应的窗体的构造方法中, InitializeComponent...
  •  2012-11-30 曾经写过 《C# WinForm窗体及其控件自适应各种屏幕分辨率》 ,其中也讲解了控件自适应的原理。近期有网友说,装在panel里面的控件,没有效果?  这是控件嵌套的问题,加入即可实现。使用皮肤时,要注意...
  • C# Winform自适应分辨率的类

    热门讨论 2013-05-24 18:08:24
    C# Winform自适应分辨率的类自适应分辨率的类
  • 1.项目情况:项目使用winform搭建,禁用用户放大缩小,一直全屏展示 2.问题: a.用tableLayoutPanel加panel能不能做到自适应布局呢?(保证布局不跑偏) b.如果a成立那么里面的控件如何做到按照屏幕分辨率等比缩放呢,...
  •  C# WinForm窗体及其控件自适应各种屏幕分辨率一。说明 我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当...
  • 最近在开发一个c/s软件,结果发现软件在本机和客户端上的显示大相径庭...在本机上显示佷规整,但在客户机上控件显示时都缩了一些。整个软件界面布局很不美观,原因是客户机上的分辨率要高。请问这种问题如何能解决呢?
  • C# WinForm窗口自适应布局

    千次阅读 2019-06-22 15:31:37
    本文用一个实际布局案例,介绍了利用`Docker`和`Anchor`来实现一个自适应大小的界面布局,以及控件放置顺序对布局效果的影响。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,059
精华内容 423
关键字:

winform控件自适应