使用C#Windows格式的计时器停止并重复该过程

使用C#Windows格式的计时器停止并重复该过程,c#,timer,C#,Timer,我试图使用计时器来实现一种过去用来显示进程正在运行的旧动画 我希望这样做的方式是在句子中添加点(在标签控件中),例如: “进程正在运行。”到“进程正在运行…”和“进程正在运行…”,限制为3个点,然后恢复为单个点 我不确定在这里使用计时器是否是最好的选择,但我认为对于这样一个简单的例子,它应该可以很好地工作 我使用的代码如下: public string InitialProcessText; private void StartBtn_Click(object sender, EventArg

我试图使用计时器来实现一种过去用来显示进程正在运行的旧动画

我希望这样做的方式是在句子中添加点(在标签控件中),例如:

“进程正在运行。”到“进程正在运行…”和“进程正在运行…”,限制为3个点,然后恢复为单个点

我不确定在这里使用计时器是否是最好的选择,但我认为对于这样一个简单的例子,它应该可以很好地工作

我使用的代码如下:

public string InitialProcessText;

private void StartBtn_Click(object sender, EventArgs e)
{
    if(fileName != "No file selected")
    {
        ValidationLbl.Text = null;
        ProcessLbl.Text = "Application is now running.";
        //InitialProcessText = ProcessLbl.Text;
        ProcessTimer.Start();
    }
    else
    {
        ValidationLbl.Text = "No file was added";
    }
}

private void StopBtn_Click(object sender, EventArgs e)
{
    ProcessTimer.Stop();
}

private void ProcessTimer_Tick(object sender, EventArgs e)
{
    _ticks++;

    //For every two ticks, ProcessLbl.Text = InitialProcessText
    ProcessLbl.Text += ".";
}

我可以添加什么来设置添加2个点的限制,然后删除点并再次添加点(我假设在
ProcessTimer\u Tick
方法中执行此操作)?

您可以使用
\u ticks
变量:

private readonly int _ticksPerUpdate = 2;
private readonly int _maxNumberOfDots = 3;

private void ProcessTimer_Tick(object sender, EventArgs e)
{
    _ticks++;

    if(_ticks == (_ticksPerUpdate * (_maxNumberOfDots + 1)))
    {
        _ticks = 0;
        ProcessLbl.Text = InitialProcessText;
    }        
    else if(_ticks % _ticksPerUpdate == 0)
    {
        ProcessLbl.Text += ".";
    }
}
每次启动计时器时,请记住重置滴答声计数器:

private void StartBtn_Click(object sender, EventArgs e)
{
    if(fileName != "No file selected")
    {
        ValidationLbl.Text = null;
        ProcessLbl.Text = "Application is now running.";
        InitialProcessText = ProcessLbl.Text;

        // reset the variable
        _ticks = 0
        ProcessTimer.Start();
    }
    else
    {
        ValidationLbl.Text = "No file was added";
    }
}

我假设_ticks计算滴答声的数量。然后你可以去:

if(ticks%3 == 0)
{
  ProcessLbl.Text = "Application is now running."
}
else
{
  ProcessLbl.Text+=".";
}

然后,在第一个记号处,1%3=1,它加了一个点,在第二个记号处,2%3=2,它加了一个点,第三个记号处,3%3=0,所以它回到原来的位置。

只是因为……这里有另一种方法:

private void ProcessTimer_Tick(object sender, EventArgs e)
{
    ProcessLbl.Text = ProcessLbl.Text.EndsWith("...") ? ProcessLbl.Text.TrimEnd(".".ToCharArray()) + "." : ProcessLbl.Text + ".";
}

ProcessTimer是在哪里定义的?这就是我想要的,只是使用ticks变量设置一个限制。