Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法让一个命令适用于所有按钮_C#_Button_Audio - Fatal编程技术网

C# 有没有办法让一个命令适用于所有按钮

C# 有没有办法让一个命令适用于所有按钮,c#,button,audio,C#,Button,Audio,我正在做一个工具,我想出了如何为一个按钮做一个声音效果。有没有办法,我可以使一个命令适用于所有按钮,而不是把我的声音效果的定义之前,每个按钮编码。我知道在每个按钮上编码之前输入命令会起作用,但是有办法做到这一点吗?谢谢假设您正在谈论WinForms或WebForms,您可以这样做: private void Form1_Load(object sender, EventArgs e) { foreach (Button b in Controls.OfType<Button>

我正在做一个工具,我想出了如何为一个按钮做一个声音效果。有没有办法,我可以使一个命令适用于所有按钮,而不是把我的声音效果的定义之前,每个按钮编码。我知道在每个按钮上编码之前输入命令会起作用,但是有办法做到这一点吗?谢谢

假设您正在谈论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
}
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-具体是什么问题?我试了一下,效果很好。