2

timer control用于显示考试剩余时间。我正在从数据库访问时间(比如 30 分钟、1 小时、2 小时)。30显示在一个标签和min另一个标签中。在 30 分钟内,我可以将其显示为30 min并在 60 秒后递减它,但我怎样才能在 1 小时和 2 小时内做到这一点?我应该在数据库中存储 1hr 和 2hrs 的值是多少,当时间减少到分钟时,如何将 hrs 更改为 mins,以及何时将time left = 0. 如何发送它以完成按钮单击,目前我正在使用下面显示的代码

public partial class MarksExamStart : Form
{        
    int tik = 0;
    public MarksExamStart(string MarksSelected,string DurationID)
    {
        InitializeComponent();
        label1.Text = conf[2];//showing 30/1/2 in label1
        label2.Text = conf[3];//showing min/hr in label2                
        timer1.Interval = 1000;
        timer1.Start();
    } 
    private void timer1_Tick(object sender, EventArgs e)
    {
        if (sender == timer1)
        {
            tik++;
            if (tik == 60)
            {
                label1.Text = (Convert.ToInt16(label1.Text) - 1).ToString();//decrementing time here
                tik = 0;
            } 
        }
    }
}
4

1 回答 1

2

如果您希望时间在一分钟内只滴答一次,那么您应该将时间间隔设置为60 * 1000

如果您想显示测试的剩余时间,您可能不想使用简单的整数,而是使用TimeSpan. 在这里您可以阅读它并查看有关如何显示它的示例。

public partial class MarksExamStart : Form
{        
    int tik = 0;
    TimeSpan examTime;

    public MarksExamStart(string MarksSelected,string DurationID)
    {
        InitializeComponent();
        examTime = TimeSpan.FromMinutes(conf[3]); // If that's not double you'll need to parse it and make sure it's in the right format
        label1.Text = conf[2];//showing 30/1/2 in label1
        label2.Text = conf[3];//showing min/hr in label2                
        timer1.Interval = 60 * 1000;
        timer1.Start();
    } 

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (sender == timer1)
        {
            if(examTime.TotalMinutes > 1)
            {
               examTime = examTime.Subtract(TimeSpan.FromMinutes(1));
               label1.Text = examTime.ToString();
            }
            else
            {
               timer.Stop();
               // Show the time ends message
            }
        }

    }  
}
于 2013-08-11T06:51:23.480 回答