شمارنده سی دقیقه ای در سی شارپ #C

روش اول

یک textbox روی فرم خود قرار دهید . فرض کنیم بخواهیم یک شمارنده معکوس ۳۰ دقیقه ای روی آن داشته باشیم . برای شروع کار ابتدا قطعه کد زیر را در نظر داشته باشید :

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?
    }
}

اگر تمام کاری که می خواهید انجام دهید این است که مقدار Texbox خود را برای شمارش معکوس از ۳۰ دقیقه تنظیم کنید. ابتدا باید اینترول تایمر خود را به چیزی کمتر از ۳۰ دقیقه تغییر دهید. چیزی مثل 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);

روش دوم

با فرض اینکه تایمر خود را روی این مقدار تنظیم کرده اید می توانید از قطعه کد زیر استفاده نمایید :

set timer interval=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;
            }
         }

روش سوم

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace countdowntimer
{
    public partial class Form1 : Form
    {
        private Timer timeX;
        private int minutesLeft;

        public Form1()
        {
            InitializeComponent();

            timeX = new Timer(){Interval = 60000};
            timeX.Tick += new EventHandler(timeX_Tick);
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {



        }

        private void button1_Click(object sender, EventArgs e)
        {
            minutesLeft=30;
            timeX.Start();
        }

        void timeX_Tick(object sender, EventArgs e)
        {

            if(minutesLeft--<=0)
            {
              timeX.Stop();
              // Done!
            }
            else
            {
              // Not done yet...
            }
            textBox1.Text = minutesLeft + " mins remaining";
        }

    }
}

روش چهارم

using System;
using System.Windows.Forms;

namespace StackOverflowCountDown
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            textBox1.Text = TimeSpan.FromMinutes(30).ToString();
        }

        private void Form1_Load(object sender, EventArgs e) { }

        private void textBox1_TextChanged(object sender, EventArgs e) { }

        private void button1_Click(object sender, EventArgs e)
        {
            var startTime = DateTime.Now;

            var timer = new Timer() { Interval = 1000 };

            timer.Tick += (obj, args) =>    
                textBox1.Text =
                    (TimeSpan.FromMinutes(30) - (DateTime.Now - startTime))
                    .ToString("hh\\:mm\\:ss");

            timer.Enabled = true;
        }
    }
}

روش پنجم

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

 

 

 

 

آیا این نوشته برای شما مفید بود ؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *