我目前正在开发一个C#应用程序。现在我试图实现一个简单的滑块:C#中的简单面板滑块#
|--------------------------|
| |
| |--------------------| |
| | | |
| | Panel1 | |
| | Panel2 | |
| | | |
| |--------------------| |
| x x x |
|--------------------------|
我有两个大小完全相同的面板。 Panel1仅用于显示边界并为panel2设置边界,然后动态交换该边界。
如果第二个x被点击,panel2应该移动到左侧,panel3应该从右侧移动到左侧。
基本上我有以下代码:
Panel panel2 = panelArray[0];
Panel panel3 = panelArray[1];
下面的代码现在应该执行幻灯片:
for (int i = 0; i <= 100; i++)
{
panel2.Location = new Point(panel2.Location.X - i, panel2.Location.Y);
System.Threading.Thread.Sleep(10);
}
for (int i = 0; i <= 100; i++)
{
panel3.Location = new Point(100 - i, panel3.Location.Y);
System.Threading.Thread.Sleep(10);
}
不知何故所述第一面板滑动出完美,但是Panel2不滑动。它只是在循环执行后显示。
任何想法为什么panel2没有执行幻灯片?我正在使用WinForms。
感谢您的回答,但我如何在循环中使用'Timer'?我的意思是我不知何故必须暂停循环来产生一个平滑的幻灯片...也许你可以添加一个简短的代码剪辑?非常感谢! – libjup 2012-07-26 20:42:13
该计时器替换循环 - 在您移动一步后退出的每个计时器事件上。计时器将会按照您指定的时间间隔触发,让您的移动速度与您现在手动进行的延迟一样平滑。 – Lucero 2012-07-26 20:45:11
Btw Application.DoEvents工作正常;)只剩下一个问题:面板的大小为800px;如果我将panel2移出,我只需将它移动到左边100px。但是,如果我让panel3滑动有800px被移动。我如何确保两张幻灯片都以相同的速度完成?我已经设置了'System.Threading.Thread.Sleep(1);'为1,但它仍然比第一个稍慢... – libjup 2012-07-26 20:46:03