如题。就是无论分辨率怎么变,windowsForm都是全屏显示的。我是在1280*1024下作的。换成其他的分辨率。按钮什么的就都重叠了。我应该怎么解决啊

解决方案 »

  1.   

    初始窗体最大化应该可以吧
    WindowState=Maximized;
    其他什么控件的,用个容器装起来在设置Dock=fill;什么的。可以吖
      

  2.   

    Anchor 设置成为top,left 
      

  3.   

    楼主你好好研究一下Dock,Anchor 这些属性,就是帮你算位置的,已经不需要你自己算了
      

  4.   

    同意10楼的说法,就是设置一下每个控件的Dock以及Anchor的相关属性!
      

  5.   

    这个不是单单设置控件的anchor属性就可以的,你必须在事先设计的时候就应该考虑好首先用panel的dock属性来设计自己的框架,为了通用,建议主程序界面的大小为800*600,这样设计后,一般的电脑都是1024*768+的,所以出现问题可以及时修正。现在你的界面首先我估计是框架没弄好,所以设置anchor属性是没用的,dock属性的话,因为你可能就没有放panel在主程序中,所以无从设置。建议:将界面重新架构,先把你的界面中的控件都放到一块,然后搭好框架,再将你窗体中的控件放到这些panel容器中,然后进行设置,我想应该就没问题了另外给你说哈anchor的属性:
    Top:说明控件距父容器的顶部距离不变...其他的类似dock属性:
    Top:说明控件除了底部以外,其他边都靠边,大小只有下边框可以拉动。你可以试试看
      

  6.   

    建议使用FlowLayoutPanel控件和
    tableLayoutPanel控件
      

  7.   

    有好多软件都考滤了窗口的大小,当窗口缩小的时候,它会把一些不重要的控件去掉,保留最主要的。
    比如“我的电脑”,当窗口变小的时候,旁边的边栏就没有了。还可以看一下Media Play,当窗口大小变化的时候它会有一些变化。程序适应不同的窗口尺寸是一个比较复杂的问题,从最开始设计的时候就要考滤,大的时候怎么排版?小的时候又怎么排版?想清楚以后,编程就容易了。还有一个要注意的。有人可能改变屏幕的DPI,通俗的话就是文字的大小,这样的话排版也会发生变化。
      

  8.   

    先用主控件(panel)排框架,然后把控件设在里面设置dock为撑满就行了
      

  9.   

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        For Each c In Me.Controls
                c.Left = 10
            Next
        End Sub这样就可以遍历了
      

  10.   

    这语言没什么区别的吧,c#好像不能动态数据类型,Control 用下就可以了namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                foreach (Control c in this.Controls)
                {
                    c.Left = 10;
                } 
            }
        }
    }
      

  11.   

    实现过    思路是在一个form加载的时候  重新计算窗体内控件的大小    然后加载      感觉效率不快  但是目前我知道的解决方法就这样 也是最实用的
      

  12.   

    用代码实现的,控件会自己调大小的       private void  setTag(Control cons)
            {
                foreach (Control con in cons.Controls)
                {
                    con.Tag = con.Width +":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;
                    if (con.Controls.Count > 0)
                        setTag(con);                
                }
            }
            private void setControls(float   newx, float  newy, Control  cons)
            {
                foreach (Control  con in cons .Controls )
                {                string[] mytag = con.Tag.ToString().Split(new char[] { ':' });
                    float a = Convert.ToSingle(mytag[0]) * newx;
                    con.Width = (int)a;
                    a=Convert.ToSingle(mytag[1]) * newy;
                    con.Height = (int)(a);
                    a=Convert.ToSingle(mytag[2]) * newx;
                    con.Left = (int)(a);
                    a=Convert.ToSingle(mytag[3]) * newy;
                    con.Top = (int)(a);
                    Single currentSize = Convert.ToSingle (mytag[4]) * newy;
                    con .Font =new Font (con.Font .Name ,currentSize,con.Font .Style ,con.Font .Unit );
                    if(con.Controls .Count >0)
                    {
                        setControls (newx ,newy ,con );
                    }
                }        }        void Form1_Resize(object sender, EventArgs e)
            {
               // throw new Exception("The method or operation is not implemented.");
                float  newx = (this.Width )/ X;
              //  float newy = (this.Height - this.statusStrip1.Height) / (Y - y);
                float newy = this.Height / Y;
                setControls(newx, newy, this);
                this.Text = this.Width.ToString() +" "+ this.Height.ToString();        }***重要***在Form_Load里面添加:               this.Resize += new EventHandler(Form1_Resize);             X = this.Width; 
                Y = this.Height; 
               // y = this.statusStrip1.Height;  setTag (this);当然定义了两个全局变量,private float X; private float Y;