问题 想要使用用户输入作为计时器

毛茸茸的

新成员
已加入
2017年7月14日
留言内容
1
编程经验
Beginner
您好,我只是制作一个有趣且精益的程序,但我遇到了麻烦,我想做的是在Form上设置一个倒数计时器,我希望用户能够在此设置他们想倒数的时间格式为hh:mm:ss(00:00:00),到目前为止,我在按下按钮button1_click后得到了一个从30开始倒数​​的文本框。香港专业教育学院试图制作另一个文本框和一个按钮,用户可以在那里输入时间并按一下按钮,它被发送到计时器,但没有用。当您查看代码时,时间存储在一个int(int timeLeft;) 所以有可能我可以尝试将int值更改为用户输入的值。

C#:
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WindowsFormsApp1
{
    public partial class Form3 : Form
    {
        int timeLeft;


        public Form3()
        {
            InitializeComponent();
        }


        private void Form3_Load(object sender, EventArgs e)
        {


        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            if (timeLeft > 0)
            {
                // Display the new time left
                // by updating the Time Left label.
                timeLeft = timeLeft - 1;
                timeLabel.Text = timeLeft + " seconds";
            }
            else
            {
                // If the user ran out of time, stop the timer, show
                // a MessageBox, and fill in the answers.
                timer1.Stop();
                timeLabel.Text = "Time's up!";
                MessageBox.Show("You didn't finish in time.", "Sorry!");
                reset.Enabled = true;
            }


        }
        private void button1_Click(object sender, EventArgs e) //starts the count down
        {
            timeLeft = 30;
            timeLabel.Text = "30 seconds";
            timer1.Start();
        }


        private void button2_Click(object sender, EventArgs e)
        {
       ///    timeLabel.GetType();
     My attempt at imputing /////   MessageBox.Show(this.inputText.Text);








        }


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

土佐

成员
已加入
2017年7月9日
留言内容
19
编程经验
5-10
我可能会做这样的事情(适应您的需求和所需的代码)。

C#:
private DateTime m_stopTime;
        private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime currentTime = DateTime.Now;
            if ( currentTime >= m_stopTime)
            {
                timer1.Stop();
            }
            else
            {
                TimeSpan span = m_stopTime.Subtract(currentTime);
                label1.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", span.Hours, span.Minutes, span.Seconds);
            }
        }


        private void button1_Click(object sender, EventArgs e)
        {
            m_stopTime = DateTime.Now + new TimeSpan(userHours, userMinutes, userSeconds);
            timer1.Start();
        }
 
最佳 底部