在C#中使用AnimateWindow API ,为什么窗体上的控件都看不见,要怎样才能显示那些控件 5

如题,使用AnimateWindow做滑出的动画窗口,为什么滑出窗口的控件都看不到,只能看到背景图片。要怎样才能看见窗口上的控件呢,如Label控件... 如题,使用AnimateWindow 做滑出的动画窗口,为什么滑出窗口的控件都看不到,只能看到背景图片。要怎样才能看见窗口上的控件呢,如Label控件 展开
 我来答
聊无无
2012-06-13 · TA获得超过1206个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:216万
展开全部
调用次序错了吧。在构造函数中的
InitializeComponent();
后面调用AnimateWindow 看看
更多追问追答
追问
这个没关系的,好像是AnimateWindow的问题,C++有解决方法,但看不懂,想知道C#该怎么办
追答
简单看了下,还是调用次序的问题。
不要在FORM的构造函数,而是在Load事件中调用AnimateWindow就可以了。
似乎在构造函数中调用AnimateWindow,控件还没有被paint到Form上,所以在这个时候调用AnimateWindow,控件不会一并跟着显示,而是在AnimateWindow结束后才一下子都显示出来。而之前已经画好的图形则会显示,譬如背景图片。
附带的图片是演示的例子,动画为从右往左的展开,我在快结束的时候截的图。上面,灰色底的是一个DataGridView控件,有学籍卡号标签是一个第三方的表格控件,下方是三个button,蓝色底的则是一个Lable,红色的圆形是通过重载onpaint函数,在加载Form是就绘制的。
所以你能看出,所有的控件都跟着AnimateWindow逐步显示出来,Lable还有一部分没出来。
而如果在构造函数中调动AnimateWindow,那么所有的控件都不会跟着出来,只有那个提前画好的红色圆形跟着出来;在AnimateWindow结束的一瞬间,所有的控件才都被绘制在Form上。
所以应该是构造函数结束后,添加的控件才会被绘制并显示,所以在Load事件中调用AnimateWindow就能够解决了。因为Load事件是载入完全完成后才触发的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式