0

C# のコースを開始しましたが、タイマーを実行できません。おそらく非常に単純で、ここで何かを見逃しています。基本的に、信号シーケンスを開始および停止するボタンがあります。1秒の間隔が欲しかった。ここに私が書いたものがあります。スタートを押しても意図したとおりに動作しません。ありがとうございました。

 }
    public int counter = 0;

private void rbStart_CheckedChanged(object sender, EventArgs e)
{

    counter++;

    if (counter == 1)
    {
        pbRed.Visible = true;
        pbAmber.Visible = false;
        pbGreen.Visible = false;
    }
    else if (counter == 2)
    {
        pbRed.Visible = true;
        pbAmber.Visible = true;
        pbGreen.Visible = false;
    }
    else if (counter == 3)
    {
        pbRed.Visible = false;
        pbAmber.Visible = false;
        pbGreen.Visible = true;
    }
    else if (counter == 4)
    {
        pbRed.Visible = false;
        pbAmber.Visible = true;
        pbGreen.Visible = false;
    }
    else if (counter == 5)
    {
        pbRed.Visible = true;
        pbAmber.Visible = false;
        pbGreen.Visible = false;
    }
    else
    {
        counter = 0;
    }
}

private void rbStop_CheckedChanged(object sender, EventArgs e)
{

    pbRed.Visible = false;
    pbAmber.Visible = false;
    pbGreen.Visible = false;
}

private void Form1_Load(object sender, EventArgs e)
{
    Light_timer.Tick += new EventHandler(rbStart_CheckedChanged);
    Light_timer.Interval = 1000;

}

}

4

2 に答える 2

0

おそらくタイマーの仕組みを誤解していると思います。Interval が経過すると、Timer.Tickイベントが発生します。Interval は、ティック間の実行時間を決定するためにタイマーによって使用されます。その値はタイマーによって変更されることはありません。実際、System.Windows.Forms.Timer には経過時間を取得する方法がありません。つまり、時間に依存しない独自の状態追跡メカニズムが必要になります。上記で参照したページの例をよく見て、それがどのように機能するかを理解してから、もう一度試してみてください。

于 2012-10-05T23:17:55.997 に答える
0

Interval プロパティは、Tick イベント間の経過時間を指定するだけです。ライトの「状態」を追跡する別の変数を検討し、イベント ハンドラーの各「ティック」でその変数を「バンプ」することをお勧めします。次に、信号機の適切な状態を反映するように UI 要素を調整します。「停止」状態、「注意」状態、および「緑」状態があり、ライトは各ティックでオンの間を「循環」するだけかもしれません。課題のようですので詳細はお任せします。幸運を。

于 2012-10-05T23:06:07.553 に答える