1

C# で小さなゲームを作成しています。スコアが 100 の場合、2 つのラベルを 1 秒間表示した後、再び非表示にする必要があります。

現時点で私は Form1 にいます:

void startTimer(){
 if (snakeScoreLabel.Text == "100"){
  timerWIN.Start();
 }
}

private void timerWIN_Tick(object sender, EventArgs e)
{
  int timerTick = 1;
  if (timerTick == 1)
  {
    lblWin1.Visible=true;
    lblWin2.Visible=true;
  }
  else if (timerTick == 10)
  {
    lblWin1.Visible = false;
    lblWin2.Visible = false;
    timerWIN.Stop();
  }

  timerTick++;

}

タイマーの間隔は 1000ms です。

問題 = ラベルがまったく表示されない

タイマーは私にとってかなり新しいので、ここで立ち往生しています:/

4

2 に答える 2

1

これを試して :

void startTimer()
{ 
     if (snakeScoreLabel.Text == "100")
     {
      System.Timers.Timer timer = new System.Timers.Timer(1000) { Enabled = true }; 
      timer.Elapsed += (sender, args) => 
        { 
           lblWin1.Visible=true;
           timer.Dispose(); 
        }; 
     }

} 
于 2012-10-24T05:36:33.060 に答える
0

マルチスレッド System.Threading.Timer を試してください:

public int TimerTick = 0;
        private System.Threading.Timer _timer;
        public void StartTimer()
        {
            label1.Visible = true;
            label2.Visible = true;
            _timer = new System.Threading.Timer(x =>
                                                    {
                                                        if (TimerTick == 10)
                                                        {
                                                            Invoke((Action) (() =>
                                                                                 {
                                                                                     label1.Visible = false;
                                                                                     label2.Visible = false;
                                                                                 }));
                                                            _timer.Dispose();
                                                            TimerTick = 0;
                                                        }
                                                        else
                                                        {
                                                            TimerTick++;
                                                        }

                                                    }, null, 0, 1000);

        }
于 2012-10-24T06:26:51.410 に答える