Winform中如何让控件置顶

我想做一个找茬的游戏,想实现一个屏幕切换的效果,就是像Win8一样的滑动翻页效果,现在我们还没学Winform的动态效果,整天就是些静态丑陋的窗体,昨天晚上突然突发奇想能... 我想做一个找茬的游戏,想实现一个屏幕切换的效果,就是像Win8一样的滑动翻页效果,现在我们还没学Winform的动态效果,整天就是些静态丑陋的窗体,昨天晚上突然突发奇想能不能用循环来做这个效果,然后通过Sleep()方法来设置间隔循环时间,这样会不会有移动的效果?
今天试了试虽然可以,但是弊端太多太多,第一:当指定的控件开始滑动时,整个窗体是处于无响应状态的,点什么都没反应;第二:某些位置的控件会被移动的控件挤出窗体可视范围;
下面是我的代码和效果图:
int Count = 0;
private void button10_Click(object sender, EventArgs e) { if (Count > 0) { return; } Count += 1; int Btn_Left = this.button10.Left; for (int i = 0; i < 100; i++) { Thread.Sleep(100); this.panel1.Left -= i; } this.button10.Left = Btn_Left; }
注:button10是那个按钮,当按钮被单击时滑动开始;
panel1是滑动体,里面包含了若干的按钮控件。

求大神帮忙解决,或者有更好的办法来实现这一效果。
是Winform的,不是WPF的,GDI重绘控件我还不会,因为目前为止学习的都还很浅,大部分时间都在学数据库的操作,没有学Winform窗体的各种效果的实现方式,当然也没有接触过GDI了。。。
有没有简单易理解的办法呢?
新手再次拜求各位大神。。。
展开
 我来答
Lastoco
2014-05-15 · TA获得超过121个赞
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:224万
展开全部

试试在Load事件中加上这句话:

button10.BringToFront();
更多追问追答
追问
这句话解决了第二个弊端,这句话是啥意思?控件置顶?应该不会。
求解答。。。。
追答

不好意思,我以为你的弊端只是阐述一下,刚才没太在意...

关于假死状态,那是因为你的是单一线程的原因吧。

所有的操作都在主线程里完成的话需要排队,所以就假死了。

关于第一个问题的解决方案:

1.直接用Timer,Timer这个东西是一个多线程的代表,你可以尝试吧某些需要一定时间的功能单独放在一个timer里实现(比如说移动控件)
2.用多线程异步的常规思路

关于BringToFront()

这个的解释我就不多说了,因为我的理解也不深入,你可以去网上查一下资料,免得我误导你。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8cac7d3
2014-05-15 · TA获得超过223个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:125万
展开全部
第一,想解决界面假死的问题,所有对界面控件的移动操作都要放到子线程中,并且invoke,请自行搜索相关知识。
第二,button10不是被挤了,是被你的panel挡住了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式