实际上,您正在启动一个 while 循环,该循环在您的 RadioButton 位于表单顶部之前不会退出,无论您是否仍在按下按钮。您可以通过在循环中放置一个 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);
}
}