怎么处理,
有具体代码?

解决方案 »

  1.   

    double bwidth, bheight, ewidth, eheight;
            private void Form1_ResizeBegin(object sender, EventArgs e)
            {
                bwidth = this.Width;
                bheight = this.Height;
            }
            private void Form1_ResizeEnd(object sender, EventArgs e)
            {
                ewidth = this.Width;
                eheight = this.Height;
                button1.Left = (int)(button1.Left * (ewidth / bwidth));
                button1.Width = (int)(button1.Width * (ewidth / bwidth));
                button1.Top = (int)(button1.Top * (eheight / bheight));
                button1.Height = (int)(button1.Height * (eheight / bheight));
                button1.Show();
            }
    我得笨但我努力噢.
      

  2.   

    最简单的处理方法是用Dock属性,比方ListView DataGrid Panel 等等都有这个属性
    但是用这个处理的时候注意下他们的先后顺序,
    比方以这样的例子为例,上面放几个文本框,然用户选择查询条件,下面放个ListView 显示用户的信息,那么你可以这么处理,
    新建一个窗口,在里面添加一个Panel,把其Dock属性设置为Top,然后在这个控件里面加入文本框等信息,然后拖入一个ListView,放到窗体上(是窗体上,上面的是Panel中),然后设置其Dock属性为Fill,Ok,你的窗体变动了,他们的大小也变了,
    如果这种方法不能满足,那只能自己写Resize事件,就像楼上的
      

  3.   

    可以通过设置这些控件从基类继承的属性,
    Control.Dock//填充
    Control.anchor//锚定
      

  4.   

    以前我也用过2楼那样的方法,觉得效果还可以。用Control.Dock有时候达不到想要的效果。
      

  5.   

    如果二楼那样处理,控件一多,就不好控制了
    可以仿照Java的flow layout,我们事先把布局弄好,比如用panel等控件安排好
    然后设定好panel的dock属性,这样在把控件填充到panel中,设置dock属性,这样不管最终用户怎样调整窗体,都不会影响,我就是这样用于我的项目中的