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

本文关键字:前景色 标签 单个 计时器 | 更新日期: 2023-09-27 18:37:21

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

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

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

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

另外,计时器启动时是否可以发出声音?

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

当然,在您的计时器滴答事件(我假设标准的 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();

Asterisk可以是标准的Windows系统声音(文档)的BeepExclamationHandQuestion

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

var mySound = new System.Media.SoundPlayer(@"c:'path'to'yoursoundfile.wav");
mySound.Play();
//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; } }