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了。。。
有没有简单易理解的办法呢?
新手再次拜求各位大神。。。 展开
今天试了试虽然可以,但是弊端太多太多,第一:当指定的控件开始滑动时,整个窗体是处于无响应状态的,点什么都没反应;第二:某些位置的控件会被移动的控件挤出窗体可视范围;
下面是我的代码和效果图:
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了。。。
有没有简单易理解的办法呢?
新手再次拜求各位大神。。。 展开
2个回答
展开全部
试试在Load事件中加上这句话:
button10.BringToFront();
更多追问追答
追问
这句话解决了第二个弊端,这句话是啥意思?控件置顶?应该不会。
求解答。。。。
追答
不好意思,我以为你的弊端只是阐述一下,刚才没太在意...
关于假死状态,那是因为你的是单一线程的原因吧。
所有的操作都在主线程里完成的话需要排队,所以就假死了。
关于第一个问题的解决方案:
1.直接用Timer,Timer这个东西是一个多线程的代表,你可以尝试吧某些需要一定时间的功能单独放在一个timer里实现(比如说移动控件)
2.用多线程异步的常规思路
关于BringToFront()
这个的解释我就不多说了,因为我的理解也不深入,你可以去网上查一下资料,免得我误导你。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询