Показать "Оставшееся время" с установленной даты до настоящего времени
У меня есть приложение, которое, когда происходит определенное действие, точное DATE/TIME записывается как myTime с помощью диспетчера конфигурации Visual Studion, где вы можете добавить настройки.
Это мой параметр: Properties.Settings.Default.voteTime
Я хочу, чтобы как только мое приложение начало показывать метку, на которой будет отображаться "X осталось времени до следующего запроса на голосование"
В моем контексте голосование должно проводиться каждые 12 часов, поэтому
Я хочу, чтобы лейбл в основном показывал, сколько времени осталось от этих 12 часов, начиная с момента голосования, о котором я упоминал выше.
Я перепробовал много техник, но я новичок в C#, и никто не работал для меня, каждый раз, когда на ярлыке был текст по умолчанию или он был пустым...
DateTime voteTime = Properties.Settings.Default.voteTime;
DateTime startDate = DateTime.Now;
//Calculate countdown timer.
TimeSpan t = voteTime - startDate;
string countDown = string.Format("{0} Days, {1} Hours, {2} Minutes, {3} Seconds til launch.", t.Days, t.Hours, t.Minutes, t.Seconds);
Выше я попытался написать label1.text = countDown;
Заранее спасибо.
2 ответа
Как это сделать:
Ты можешь использовать System.Windows.Forms.Timer
класс, чтобы продолжать отображать ваше оставшееся время. Вы можете сделать это в следующие шаги:
Создайте и инициализируйте таймер:
Timer timer1 = new Timer();
Создай свой tick
Метод события и установить интервал обновления времени отображения:
timer1.Tick += timer1_Tick;
timer1.Interval = 1000; //i am setting it for one second
Теперь запустите таймер:
timer1.Enabled = true;
timer1.Start();
Создайте timer.tick
Метод события и обновляйте метку каждую секунду:
void timer1_Tick(object sender, EventArgs e)
{
TimeSpan TimeRemaining = VoteTime - DateTime.Now;
label1.Text = TimeRemaining.Hours + " : " + TimeRemaining.Minutes + " : " + TimeRemaining.Seconds;
}
Полный код:
Вот полный код. Вы можете просто скопировать и вставить его:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Tick += timer1_Tick;
timer1.Interval = 1000;
timer1.Enabled = true;
timer1.Start();
}
Timer timer1 = new Timer();
void timer1_Tick(object sender, EventArgs e)
{
TimeSpan TimeRemaining = VoteTime - DateTime.Now;
label1.Text = TimeRemaining.Hours + " : " + TimeRemaining.Minutes + " : " + TimeRemaining.Seconds;
}
Вот простой способ, использующий элемент управления таймером, который будет обновлять метку каждую минуту:
TimeSpan TimeLeft = new TimeSpan();
DateTime voteTime = Properties.Settings.Default.voteTime;
public Form3()
{
InitializeComponent();
TimeLeft = voteTime - DateTime.Now;
label1.Text = TimeLeft.ToString(@"hh\:mm") + " til launch.";
//This value is in milliseconds. Adjust this for a different time
//interval between updates
timer1.Interval = 60000;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
TimeLeft = voteTime - DateTime.Now;
label1.Text = TimeLeft.ToString(@"hh\:mm") + " til launch.";
}