我用this.FormBorderStyle = FormBorderStyle.None; 
     this.TopMost = true;
     this.WindowState = FormWindowState.Maximized; 这三条语句实现了窗体的全屏显示,但窗体上的panel控件会以原来大小挤在左上角显示,不会按一定比例跟着窗体放大,请问有什么办法让控件也自动放大显示

解决方案 »

  1.   

    笨办法
    在form的sizechange事件中自己写每个控件的大小变化和位置
      

  2.   

    设置控件的anchor是不行的,会导致控件的重叠等问题。
    只能是手动写代码,窗体size变化后,对应所有的控件的size、position都相应变化
      

  3.   

    private void frmSpider_Resize(object sender, System.EventArgs e)
    {
    OurResize(sender);
    }
    private int m_frmMainW=0;
    private int m_param=0;
    private int m_URLparam=0;
    private void OurResize(object sender)
    {
    if(sender==null)
    {
    //frmMainH=540;
    m_frmMainW=this.Width;
    m_param=lbActive.Width;
    m_URLparam=currentURL.Width;
    return;
    }
    Control ctl=(Control)sender;
    int nW=0;
    if(ctl.Name=="frmSpider")
    {
    nW=(ctl.Width-m_frmMainW);
    lbActive.Width=m_param+nW;
    lbQueue.Width=m_param+nW;
    lbStoped.Width=m_param+nW;
    lbURLQueue.Width=m_param+nW;
    lbprocessURLcount.Width=m_param+nW;
    lbelapsed.Width=m_param+nW;
    currentURL.Width=m_URLparam+nW;
    return;
    }//if(ctl.Name=="frmProductMain")
    }
      

  4.   

    个人觉得使用Anchor是一个比较好的选择,而且对于界面来说,一般我们不会要求所有的控件都按比例放大,比较可能做法是让靠近界面边界的控件可以随这边界的变化而变化,让所有的控件都按比例变化,一来编程不方便,二来这样做可能会导致一些问题,比如界面的最小值界定的问题,即界面最小可以做到多少。不要让控件的四边都Anchor,而是让控件靠近界面边界的边做Anchor
      

  5.   

    可以用Component One里的c1sizer或c1sizerlight
      

  6.   

    设置每个控件的Anchor属性应该可以满足你的要求了
      

  7.   

    谢谢大家,我是想用改变Anchor的属性来实现,但发现Anchor只能改变位置,不能变大小,而且也有重叠等现象,大家再帮忙想想办法。
      

  8.   

    可以用2005里面的那个TableLayoutPanel容器,设置Dock为fill,然后你可以在网格内分布你的控件,容器的网格以百分比分布,当然控件的网格是不显示的。当窗体变大时,控件和字体均按比例放大,很好用的。呵呵。
    至于控件在里面的位置设定可以用Anchor,但是必须靠某侧。