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);    
}

P是一个radiobutton


我希望它在我按下时继续向上移动,但它只是跳到表格的顶部。它在调试中运行良好,但它确实移动得很快我想减慢单选按钮的移动并使其可见

4

2 回答 2

0

实际上,您正在启动一个 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);
    }
}
于 2012-12-29T19:59:56.773 回答
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 的时间间隔。我猜你写这个是为了好玩;所以,玩得开心!

于 2012-12-29T20:01:53.613 回答