C# 有没有办法让一个命令适用于所有按钮
我正在做一个工具,我想出了如何为一个按钮做一个声音效果。有没有办法,我可以使一个命令适用于所有按钮,而不是把我的声音效果的定义之前,每个按钮编码。我知道在每个按钮上编码之前输入命令会起作用,但是有办法做到这一点吗?谢谢假设您正在谈论WinForms或WebForms,您可以这样做:C# 有没有办法让一个命令适用于所有按钮,c#,button,audio,C#,Button,Audio,我正在做一个工具,我想出了如何为一个按钮做一个声音效果。有没有办法,我可以使一个命令适用于所有按钮,而不是把我的声音效果的定义之前,每个按钮编码。我知道在每个按钮上编码之前输入命令会起作用,但是有办法做到这一点吗?谢谢假设您正在谈论WinForms或WebForms,您可以这样做: private void Form1_Load(object sender, EventArgs e) { foreach (Button b in Controls.OfType<Button>
private void Form1_Load(object sender, EventArgs e)
{
foreach (Button b in Controls.OfType<Button>())
{
b.Click += MakeSoundEffect;
}
}
private void MakeSoundEffect(object sender, EventArgs e)
{
// Do something
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (Button b in Controls.OfType<Button>())
{
b.Click += (btnSender, btnEvent) =>
{
// Do Something
};
}
}
foreach (Button b in Controls.OfType<Button>().Where(z => z.Name.StartsWith("btnSoundEffect")))
此外,如果您不需要所有按钮,但可能只需要名称以btnSoundEffect
开头的按钮,则可以将foreach
循环更改为类似以下内容:
private void Form1_Load(object sender, EventArgs e)
{
foreach (Button b in Controls.OfType<Button>())
{
b.Click += MakeSoundEffect;
}
}
private void MakeSoundEffect(object sender, EventArgs e)
{
// Do something
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (Button b in Controls.OfType<Button>())
{
b.Click += (btnSender, btnEvent) =>
{
// Do Something
};
}
}
foreach (Button b in Controls.OfType<Button>().Where(z => z.Name.StartsWith("btnSoundEffect")))
很难说你在问什么,但可以对多个控件使用同一个处理程序。请发布代码,说明如何通过单击按钮触发声音效果,以及一些按钮的html。SoundPlayer My_BetterJukeBox=new SoundPlayer(Resource1.play);我只是这么说:我的BetterJukeBox.Play()@puregamer62-具体是什么问题?我试了一下,效果很好。