大家好,在使用FlowLayoutPanel时遇到一个问题,如下:    首先,在一个Form中加入一个GroupBox,Dock为Top。设置AutoSize为true,AutoSizeMode为GrowAndShrink。
    然后,在这个GroupBox中加入一个FlowLayoutPanel,Dock为Fill,同样设置AutoSize为true,AutoSizeMode为GrowAndShrink。    然后再在别的空白地方拖一个Button,点击事件里这样写:
    flowLayoutPanel1.Controls.Add(new TextBox());    然后连续点击Button,flowLayoutPanel1中会动态加入TextBox。但是,当FlowLayoutPanel中的TextBox加满第一行时,本应出现第二行,但是GroupBox还是只显示一行TextBox。GroupBox似乎只对第一行AutoSize了。
    请问如何让GroupBox按照实际情况把所有TextBox都显示出来呢?    注:不能将flowLayoutPanel1的FlowDirection只能是LeftToRight。    求解。

解决方案 »

  1.   

    那lz你至少知道现在已经放了几个控件了,现在控件的高宽等信息,每次新添加控件的时候,你就在当前已经放置的情况下,去加以判断,该放在哪里。还有,我不太明年lz的“但是因为我动态加载的控件大小是不一定的,也是不可预知的”,控件都是自己添加的, 没有什么是不可预期的。
    还有啊,你想让系统自动给你排布好控件,那么,你理想的情况是什么样呢?如果是挨着放的话,那我刚才说的这样应该就可以。
      

  2.   

    确实如你所说,可以自己计算,但是会有很多问题,例如Form大小被用户改变重新排列等问题。
    我其实自己实现过,但是效果很不理想,一是我能力所限,写不出高效率的算法,所以导致客户一改变Form大小,我的界面就乱窜等等。
    FlowLayoutPanel里的效果,就是我想要的效果,不但换行换的很自然,而且一点也不卡。所以我认为再没有必要自己计算了。
    至于为什么FlowLayoutPanel在被其他Panel类型包裹后就只能将Size扩展为一行的问题,我认为应该是某个设置导致的。
    所以我希望大家能给予帮助,看看是我哪里设置的不对。
      

  3.   

    郁闷,上CSDN这么久,问了这么多问题,没一个回答能正中要害。哎。。
      

  4.   


    问题解决了:
    设置FlowLayoutPanel的MaximumSize中的Width(默认Height和Width都是0)为GroupBox的Width,即可自动换行了~!
    结贴给分~虽然你没帮到我,呵呵