2011-09-22 47 views
-2

我需要一个标签,文本将在一个定时器之后发生变化。例如,定时器第一个刻度标签将显示“1 program running”,在第二个tick标签中将显示“2 program running”在第三个勾号标签中将显示“3程序运行”等。 我是编程新手。任何帮助都会很棒。动态标签在c中使用定时器#

回答

0

你尝试处理计时器滴答事件与某事像那:

int counter = 1; 
private void timer1_Tick(object sender, EventArgs e) 
{ 
    label1.Text = counter + " program running"; 
    label1.Refresh(); //not necessarily 
    counter++; 
} 
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; 

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

+0

一样的答案,但是不应该'计数== 1'是'数> = 1' – Windle

+0

@Windle:没了 - 我们当计数是1时,只想要“程序”是单数。 –

+0

哦,我完全读错了,nvm大声笑 – Windle