c# - 停止 SoundPlayer 播放

标签 c# winforms

我正在尝试创建我自己的小音板来播放 WAV 文件。现在播放不是问题,但我想要一种在需要时停止播放的方法。我想到了一个停止按钮,但不知道如何让它起作用。所以我想到了使用循环,但它似乎不起作用。只是想知道是否有人可以帮助我在哪里出错,或者这是否只是一种失败的方法,那么如果你能告诉我一个更好的方法,那就太好了。 :)

    private void button1Sound(object sender, MouseEventArgs e)
    {
        int i = 0;
        SoundPlayer simpleSound = new SoundPlayer(@"file.wav");

        while (i == 0)
        {
            simpleSound.Play();
            i++;
        }

        if (i >= 1)
        {
            simpleSound.Stop();
        }
    }

我也想过只做一个 ELSE IF,但那也行不通。我试过:

    private void button1Sound(object sender, MouseEventArgs e)
    {
        int i = 0;
        SoundPlayer simpleSound = new SoundPlayer(@"file.wav");

        if (i == 0)
        {
            simpleSound.Play();
            i++;
        }
        else if (i > 1)
        {
            simpleSound.Stop();
        }
    }

最佳答案

因为您在 void 中添加了 int i = 0,每次调用事件时,i 将始终为 0。所以最好在 void 之外包含 i

 int i = 0;
 SoundPlayer simpleSound = new SoundPlayer(@"file.wav"); //Thanks to @Wanabrutbeer

 private void button1Sound(object sender, MouseEventArgs e)
    {


        if (i == 0)
        {
            simpleSound.Play();
            i++;
        }

       else if (i >= 1)
        {
            simpleSound.Stop();
            i--;
        }
    }

注意:类SoundPlayer 只播放.wav 文件。如果您想播放其他媒体文件,例如 .mp3、.mpeg 等...,请改用 MediaPlayer

谢谢,

希望对您有所帮助:)

关于c# - 停止 SoundPlayer 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12887589/

相关文章:

c# - 尝试通过安全透明方法 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' 访问安全关键

c# - 使winforms在没有UI的情况下运行的命令行

c# - 如何从Button Click事件获取返回值?

vb.net - Form.Load 事件未触发,表单显示

c# - 通过 WPF 应用程序启动时 Winform 窗口会缩小

c++ - 在 Visual C++ 中单击按钮显示和隐藏图形

c# - 当 RenderMode 为 "System"时,ToolStripMenuItem 无法显示复选标记和图像(图标)?

c# - 在 select new 中使用 List<> 加入 LINQ

c# - WPF UI 卡住 - UI 线程冲突?

c# - 如何为 ToString 创建扩展方法?