有什么办法,我可以使一个命令适用于所有按钮
本文关键字:一个 命令 适用于 按钮 什么 可以使 我可以 | 更新日期: 2023-09-27 18:18:57
我正在制作一个工具,我想出了如何为按钮做一个声音效果。是否有任何方法,我可以使一个命令适用于所有按钮,而不是把我为每个按钮编码之前的声音效果的定义。我知道把命令之前的编码每个按钮将工作,但有办法做到这一点吗?由于
假设你正在谈论的是WinForms或WebForms,你可以这样做:
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
}
这将获取表单上的所有按钮,当单击时,它将执行MakeSoundEffect
。您可以使用sender
对象来确定按下了哪个按钮。
如果你的MakeSoundEffect()
方法足够简单,你可能想使用lambda来创建闭包,像这样:
private void Form1_Load(object sender, EventArgs e)
{
foreach (Button b in Controls.OfType<Button>())
{
b.Click += (btnSender, btnEvent) =>
{
// Do Something
};
}
}
此外,如果您不想要所有按钮,但可能只是按钮的名称以btnSoundEffect
开头,您可以将foreach
循环更改为如下所示:
foreach (Button b in Controls.OfType<Button>().Where(z => z.Name.StartsWith("btnSoundEffect")))
如果你只需要特定的按钮,可能更好的方法是在表单上创建一个组,并将所有按钮放在该组中,然后将for
循环更改为:
foreach (Button b in grpButtons.Controls.OfType<Button>())
{
// Do Something
}