none
如何在窗体中实现容器的有序折叠和窗体的大小自动适应 RRS feed

  • 问题

  • 想在一个窗体中放几个容器(暂时使用了groupbox),实现这些容器的折叠,窗体大小自动适应。

    尝试过定义容器的size属性,通过点击事件更改容器大小变化以模拟折叠效果,不理想,容器变小后有空白部分,窗体的大小不会自动适应。

    敬请各位高手支援。

    2010年4月1日 8:32

答案

  • 一般的做法是当单击了折叠按钮时,以水平折叠为例,则用一 Timer 控制每 20 毫秒 (假定) 将其 Size.Y - 1,同时,减少其 Opacity,这样,就会有一种弹入折叠的效果。

    另外如果您熟悉 Windows Animation 的话,可以用 Windows 7 最新的 Windows Animation API 来实现这些效果,系统已经内置了很多效果,如淡出,折叠,拉伸,改变大小等。

    窗体有一个 AutoSize 属性,设置为 true,如果窗体下面有空,则窗体会自动改变其大小。但个人觉得这东东不好用。还是自己写动画比较实在。


    Mark Zhou
    2010年4月1日 9:25
  • autosize 好象是只会扩大不会缩小吧,要缩小还是得自己来,反正也方便。
    霸王
    2010年4月1日 10:15
  • 你好!

         可以尝试设置控件的Anchor属性,然后来调整窗体的Size属性,看看是否可以实现这样的效果!


    周雪峰
    2010年4月1日 12:12
    版主

全部回复

  • 一般的做法是当单击了折叠按钮时,以水平折叠为例,则用一 Timer 控制每 20 毫秒 (假定) 将其 Size.Y - 1,同时,减少其 Opacity,这样,就会有一种弹入折叠的效果。

    另外如果您熟悉 Windows Animation 的话,可以用 Windows 7 最新的 Windows Animation API 来实现这些效果,系统已经内置了很多效果,如淡出,折叠,拉伸,改变大小等。

    窗体有一个 AutoSize 属性,设置为 true,如果窗体下面有空,则窗体会自动改变其大小。但个人觉得这东东不好用。还是自己写动画比较实在。


    Mark Zhou
    2010年4月1日 9:25
  • autosize 好象是只会扩大不会缩小吧,要缩小还是得自己来,反正也方便。
    霸王
    2010年4月1日 10:15
  • 你好!

         可以尝试设置控件的Anchor属性,然后来调整窗体的Size属性,看看是否可以实现这样的效果!


    周雪峰
    2010年4月1日 12:12
    版主
  • 你好!

         可以尝试设置控件的Anchor属性,然后来调整窗体的Size属性,看看是否可以实现这样的效果!


    周雪峰

    谢谢版主您的提示,我按照您给的思路改了一下容器的Anchor的属性,另外窗体的Antosize属性为True,Autosizemode属性为GrowAndShrink,运行后已有想要的效果了。可是运行后窗体并非原设计的大小,而是变的很小,都无法拉伸。您能不能再给分析一下问题所在
    2010年4月1日 12:53
  • 你好!

         窗体的AutoSize属性不用设置成true,你再试试!


    周雪峰
    2010年4月2日 14:06
    版主