1

我是 C# 新手,我已经搜索过但没有找到解决问题的简单方法。我正在创建一个 Windows 窗体应用程序。单击开始按钮后,它会每毫秒计数一次,当它从数组中达到特定值时会更改标签。毫秒是如何计算的?

-------------------------

AlekZanDer 代码:

            namespace timer_simple3
    {
        public partial class Form1 : Form
{
    long result = 0;
    public Form1()
    {
        InitializeComponent();
        this.timer1 = new System.Windows.Forms.Timer(this.components);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
    }

    private void timer1_Tick(object sender, EventArgs e)
    {

         result = result + 1;
        label1.Text = Convert.ToString(result);

    }

    private void btstart_Click(object sender, EventArgs e)
    {
        timer1.Interval = 1; //you can also set this in the
        //properties tab
        timer1.Enabled = true;
        timer1.Start();
       // label1.Text = Convert.ToString(timer1);
    }

    private void btstop_Click(object sender, EventArgs e)
    {
        timer1.Stop();
    }
}
    }
4

2 回答 2

0

首先,您必须创建一个方法,告诉计时器每隔 [将所需的数字放在这里] 毫秒做什么。

private void randomTimer_Tick(object sender, EventArgs e)
{
    if (conditions)
    {
        ... //stuff to do
        ... //more stuff to do
        ... //even more stuff to do
    } 
}

然后你设置定时器来调用这个方法:你可以通过使用定时器属性的事件选项卡来做到这一点,或者写:

this.randomTimer1.Tick += new System.EventHandler(this.randomTimer1_Tick);

在 ProjectName.Designer.cs 文件中的private void InitializeComponent(){}方法行之后this.randomTimer = new System.Windows.Forms.Timer(this.components);

最后,您启用计时器:

private void startButton (object sender, EventArgs e)
{
    randomTimer.Interval = timeInMilliseconds; //you can also set this in the
                                               //properties tab
    randomTimer.Enabled = true;
}

当然,您也必须设置按钮来调用此方法。

如果您不知道“属性”窗口在哪里(我假设您使用的是 Visual C#):它通常是位于窗口右侧的选项卡。为了在选项卡中显示某些内容,您必须在设计视图中选择要编辑的表单。如果编译器窗口的任何地方都没有这样的选项卡,请转到“查看”->“其他窗口”并选择“属性窗口”。

如果你找到的答案又长又复杂,那主要是因为他们用细节和例子来解释整个过程。如果您使用 Visual C# 的“拖放”选项,表单的声明代码将自动发生,然后由您编写方法的代码。还有其他一些不言自明的功能,使编程更愉快。使用它们!

于 2012-11-22T21:38:40.570 回答
0

毫秒是如何计算的?

您不能这样做,因为Windows 窗体计时器组件是单线程的,并且精度限制为55毫秒。如果您需要更准确的多线程计时器,请使用 System.Timers 命名空间中的 Timer 类。

此外,任何其他计时器都不会为您提供超过16毫秒的精度(实际上是 15.625 毫秒,或 64Hz)。所以,你不能增加一些计数器来计算经过的毫秒数。

您的选项 - 而不是long result计数器使用当前时间和计时器开始时间之间的差异:

label1.Text = (DateTime.Now - startDateTime).Milliseconds.ToString();
于 2012-11-22T23:27:55.237 回答