使用单个计时器更改标签的前景色(可以吗?
本文关键字:前景色 标签 单个 计时器 | 更新日期: 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系统声音(文档)的Beep
、Exclamation
、Hand
或Question
。
如果要播放自定义声音,可以使用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;
}
}