C# c语言中使用定时器的动态标签#

C# c语言中使用定时器的动态标签#,c#,timer,label,C#,Timer,Label,我需要一个标签,文本将在计时器一个刻度后更改。例如,计时器第一个刻度标签将显示“1程序运行”,第二个刻度标签将显示“2程序运行”,第三个刻度标签将显示“3程序运行”,依此类推。 我是编程新手。任何帮助都会非常感谢。好吧,你需要保持一些状态。老实说,最简单的方法是在lambda表达式中捕获变量: int count = 0; timer.Tick += (sender, args) => { count++; label.Text = string.Format("{0} {

我需要一个标签,文本将在计时器一个刻度后更改。例如,计时器第一个刻度标签将显示“1程序运行”,第二个刻度标签将显示“2程序运行”,第三个刻度标签将显示“3程序运行”,依此类推。
我是编程新手。任何帮助都会非常感谢。

好吧,你需要保持一些状态。老实说,最简单的方法是在lambda表达式中捕获变量:

int count = 0;
timer.Tick += (sender, args) => {
    count++;
    label.Text = string.Format("{0} {1} running", count,
                               count == 1 ? "program" : "programs");
};
或者,您可以创建一个新类来维护该状态:

internal class ProgramCounterTimerHandler
{
    private int count = 0;
    private readonly Label label;

    internal ProgramCounterTimerHandler(Label label)
    {
        this.label = label;
    }

    internal void ShowProgramCount(object sender, EventArgs e)
    {
        count++;
        label.Text = string.Format("{0} {1} running", count,
                                   count == 1 ? "program" : "programs");
    }
}

Then you can use:

timer.Tick += new ProgramCounterTimerHandler(label).ShowProgramCount;

或者,如果您很高兴在类中拥有一个实例变量,您可以通过这种方式跟踪计数。

您是否尝试过用类似的方式处理计时器滴答事件:

int counter = 1;
private void timer1_Tick(object sender, EventArgs e)
{
    label1.Text = counter + " program running";
    label1.Refresh();   //not necessarily
    counter++;
}

喜欢这个答案,但不应该是
count==1
count>=1
@Windle:Nope-我们只希望当count为1时“program”是单数。