実際には、ボタンを押しているかどうかに関係なく、RadioButtonがフォームの上部に表示されるまで終了しない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);
}
}