2

textbox1.Text30分間カウントダウンしたい。これまでのところ、私はこれを持っています:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Timer timeX = new Timer();
        timeX.Interval = 1800000;
        timeX.Tick += new EventHandler(timeX_Tick);
    }

    void timeX_Tick(object sender, EventArgs e)
    {
        // what do i put here?
    }
}

しかし、私は今困惑しています。Google で回答を確認しましたが、質問に一致する回答が見つかりませんでした。

4

5 に答える 5

2

Texbox の値を 30 分からカウントダウンするように設定するだけなら、. まず、タイマー間隔を 30 分未満に変更する必要があります。timeX.Interval = 1000;毎秒発火するようなもの。次に、イベントを次のように設定します。

 int OrigTime = 1800;
 void timeX_Tick(object sender, EventArgs e)
 {
     OrigTime--;
     textBox1.Text = OrigTime/60 + ":" + ((OrigTime % 60) >= 10 ?  (OrigTime % 60).ToString() : "0" + OrigTime % 60);
 }

また、ボタンのクリックで、次の行を追加する必要があります:timeX.Enabled = true;タイマーを開始するには。

于 2013-05-18T03:01:50.603 に答える
1

30 分が経過すると、コードは 1 つのイベントのみを発生させます。UI を継続的に更新し続けるには、イベントをより頻繁に行い、イベント ハンドラー内に条件を追加して、30 分が経過したらカウントダウンを停止するように指示する必要があります。

TimeSpan と DateTime を使用すると、時間の計算を簡単に行うことができます。

また、UI コードが UI スレッドで実行されるようにする必要があるため、Invoke.

  timeX.Interval = 500;

...


  TimeSpan timeSpan = TimeSpan.FromMinutes(30);
  DataTime startedAt = DateTime.Now;
  void timeX_Tick(object sender, EventArgs e)
  { 
       if ((DateTime.Now - startedAt)<timeSpan){
          Invoke(()=>{
             TimeSpan remaining = timeSpan - (DateTime.Now - startedAt);
             textBox.Text = remaining.ToString(); 
          });
       } else
          timeX.Stop();
  }
于 2013-05-18T03:10:45.217 に答える
0

これを試してくださいこれがうまくいくことを願っています

タイマー間隔を 1000 に設定

minremain=1800000; //Should be in milisecond
timerplurg.satrt();

 private void timerplurg_Tick(object sender, EventArgs e)
        {
       minremain = minremain - 1000;
        string Sec = string.Empty;
        string Min = string.Empty;
        if (minremain <= 0)
        {
            lblpurgingTimer.Text = "";
            timerplurg.Stop();
            return;
        }
        else
        {
            var timeSpan = TimeSpan.FromMilliseconds(Convert.ToDouble(minremain));

            var seconds = timeSpan.Seconds;
            var minutes = timeSpan.Minutes;
            if (seconds.ToString().Length.Equals(1))
            {
                Sec = "0" + seconds.ToString();
            }
            else
            {
                Sec = seconds.ToString();
            }
            if (minutes.ToString().Length.Equals(1))
            {
                Min = "0" + minutes.ToString();
            }
            else
            {
                Min = minutes.ToString();
            }
            string Totaltime = "Purge Remaing Time: " + Min + ":" + Sec;
            lblpurgingTimer.Text = Totaltime;
            }
         }
于 2015-08-26T09:03:24.040 に答える