我有一个包含5个标签的表单。我可以用1个计时器更改这些标签的ForeColor
吗?
例如,当我想要更改其中一个标签的前景色时,我必须写:
Button1.ForeColor = System.Drawing.Color.Red;
这只影响一种形式。我是否必须为每个标签设置1个计时器?如果我有30个标签,这会变得很麻烦,因为那时我必须编写30个不同的计时器。
此外,定时器启动时是否可以发出声音?
答案 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
可以是Beep
,Exclamation
,Hand
或Question
。
如果您想播放自定义声音,可以使用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;
}
}