使用单个计时器更改标签的前景色(可以吗?)

时间:2016-03-04 17:28:00

标签: c#

我有一个包含5个标签的表单。我可以用1个计时器更改这些标签的ForeColor吗?

例如,当我想要更改其中一个标签的前景色时,我必须写:

Button1.ForeColor = System.Drawing.Color.Red;

这只影响一种形式。我是否必须为每个标签设置1个计时器?如果我有30个标签,这会变得很麻烦,因为那时我必须编写30个不同的计时器。

此外,定时器启动时是否可以发出声音?

2 个答案:

答案 0 :(得分:1)

当然,在你的计时器嘀嗒事件上(我假设标准的winforms计时器控件),只需设置所有标签的颜色:

label1.ForeColor = Color.Red;
label2.ForeColor = Color.Red;
label3.ForeColor = Color.Red;
// etc.

或者,如果所有标签组件都是一个控件的直接后代(例如,您的表单):

foreach(var label in this.Controls.OfType<Label>())
  label.ForeColor = Color.Red;

要播放系统声音,只需添加:

System.Media.SystemSounds.Asterisk.Play();
对于标准的Windows系统声音(documentation),

Asterisk可以是BeepExclamationHandQuestion

如果您想播放自定义声音,可以使用System.Media.SoundPlayer

var mySound = new System.Media.SoundPlayer(@"c:\path\to\yoursoundfile.wav");
mySound.Play();

答案 1 :(得分:0)

//5 labels

int i = 0; private void timer1_Tick(object sender, EventArgs e) { switch (i) { case 0: label1.ForeColor = Color.Red; System.Console.Beep(); i++; break; case 1: label2.ForeColor = Color.Yellow; System.Console.Beep(); i++; break; case 2: label3.ForeColor = Color.Blue; System.Console.Beep(); i++; break; case 3: label4.ForeColor = Color.Green; System.Console.Beep(); i++; break; case 4: label5.ForeColor = Color.Pink; System.Console.Beep(); i++; break; } }