2012-12-29 47 views
1

鼠標按下我想改變單選按鈕的位置,並讓它動起來,而我點擊按鈕搬家(變更)對象而上按鈕

試過這種

private void up_MouseDown(object sender, MouseEventArgs e) 
{ 
    while(P.Location.Y>0) 
    P.Location = new System.Drawing.Point(P.Location.X, P.Location.Y - 1);  
} 

Pradiobutton


我希望它在我按下時保持向上移動,但它只是跳到表單的最上面。 它的工作在調試好,但它的真正快速移動 我想減緩單選按鈕的運動並使其可見

回答

0

其實你開始一個while循環不會退出,直到你的單選按鈕是窗體頂端你是否還在按下按鈕。你可以通過在你的循環中放入一個Thread.Sleep來減慢它的速度。

private void up_MouseDown(object sender, MouseEventArgs e) 
{ 
    while (P.Location.Y > 0) 
    { 
     P.Location = new System.Drawing.Point(P.Location.X, P.Location.Y - 1); 
     System.Threading.Thread.Sleep(10); 
    } 

} 

如果你想有更好的控制我會使用一個計時器。在本例中,間隔設置爲10.

private void up_MouseDown(object sender, MouseEventArgs e) 
{ 
    timer1.Start(); 
} 

private void up_MouseUp(object sender, MouseEventArgs e) 
{ 
    timer1.Stop(); 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    if (P.Location.Y > 0) 
    { 
     P.Location = new System.Drawing.Point(P.Location.X, P.Location.Y - 1); 
    } 
} 
+0

**非常感謝我沒有使用計時器** –

+0

@AmjadArab歡迎您,如果有任何一個答案,你得到了答案你的問題一定要點擊複選框右邊的答案,它會將問題標記爲正在回答,您和回答者會得到一些迴應。 –

0

您可以使用計時器。從工具箱中添加一個定時器,稱其名稱爲timer1,然後添加以下方法:

private void P_MouseUp(object sender, MouseEventArgs e) { 
    timer1.Enabled=false; 
} 

private void P_MouseDown(object sender, MouseEventArgs e) { 
    timer1.Enabled=true; 
} 

private void timer1_Tick(object sender, EventArgs e) { 
    if(P.Location.Y>0) 
     P.Location=new System.Drawing.Point(P.Location.X, P.Location.Y-1); 
} 

您可以在屬性窗口中更改timer1的間隔。我想你寫這個是爲了好玩;所以,玩得開心!

+0

**非常感謝** –