我在高分辨率下做了个程序, 改了分辨率  程序就只显示一部分,很多地方不显示,怎么办?直接改WindowsState的属性设置为Maximized  无效..控件没有缩小..

解决方案 »

  1.   

    需要调整控件的Anchor属性,随容易大小改变而改变。
      

  2.   

     private void ctlAppearance_position(int Width, int Height)
            {
                Form2 frm = new Form2();               
                    foreach (Control control in (frm.Controls))
                    {
                        float a = control.Width * Width / 1600;
                        float b = control.Height *Height/900 ;                    control.Scale(new SizeF(control.Width / Width,control.Height / Height));
                    }
                
            }
            //载入初始化
            private void Form2_Load(object sender, EventArgs e)
            {
                Rectangle rect = new Rectangle();//声明一个rect
                rect = Screen.PrimaryScreen.Bounds;//获取当前屏幕的分辨率
                int width, height;//声明宽度,高度
                width = int.Parse(rect.Width.ToString());
                height = int.Parse(rect.Height.ToString());//将高度宽度赋值
                ctlAppearance_position(Width, Height);为什么没有效果呢?
      

  3.   


    求具体详解.例如窗体有:
    panel ,里面有个label,text
    picturebox
    panel ,里面有datagrivew label
    这么设置?
      

  4.   

    Anchor不适用这种情况的吧。
    楼主试试这个属性:AutoScaleMode ,这个是设置当屏幕分辨率或字体更改时窗体或控件的缩放方式的。
      

  5.   

    将AutoScaleMode属性设置为Dpi,就可以根据屏幕分辨率进行自动缩放了
      

  6.   

    汗这个属性是在设计的时候调整的,不是安装后。你试试呗,你在分辨率高的电脑上设计的时候更改这个属性,然后打包到分辨率低的电脑上安装,看有没有效果。自动缩放的执行过程是这样的:
    1、设计时,每一个 ContainerControl 分别在 AutoScaleMode 和 AutoScaleDimensions 中记录缩放模式和它的当前分辨率。 
    2、运行时,实际分辨率存储在 CurrentAutoScaleDimensions 属性中。 AutoScaleFactor 属性会动态计算运行时分辨率与设计时分辨率的比值。 
      

  7.   

    如果是wpf,用viewbox作为顶层控件即实现自动缩放;
    如果是winform,比较麻烦,winform没有自动缩放的组件,这个需要你在布局的时候就考虑好,一般Anchor和dock等属性来相对定位和填充;
    一般的开发,应该实现一个最小分辨率,比如800*600定位最小分辨率,再小就会对界面外观造成比较大的影响,然后适应高分辨率下的排版,你这样优先实现高分辨,很难搞的~~~
      

  8.   

    一般的办法是 achor+minsize 根本结局用wpf重新做UI
      

  9.   

    就是WINform,,没有用过 “Anchor和dock等属性” 谁给个布局的例子?