我目前正在開發一個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