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


押している間、上に移動し続けたいのですが、フォームの上にジャンプしているだけです。デバッグではうまく機能していますが、本当に速く動いています。ラジオボタンの動きを遅くして表示したいです。

4

2 に答える 2

0

実際には、ボタンを押しているかどうかに関係なく、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);
    }
}
于 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 に答える