.wav文件的播放/暂停按钮

时间:2015-05-19 04:04:26

标签: c# button soundplayer

我在这里和其他地方看到过一些关于多功能按钮的帖子,但我在实施他们的建议时遇到了麻烦。

我正在编写一个生成并保存.wav文件的合成器。 我有一个按钮,通过将SoundPlayer保存到'bin'来播放声音,而不保存它,我稍后会将其删除。我意识到这不是播放声音的理想方式!

单击按钮时,按钮标签从“播放”变为“停止”。 不幸的是,我无法让按钮充当“停止”。

我试过创建一个'计数器',

    public static int NumOfClicks = 0;

每次单击按钮时执行NumOfClicks ++,然后if(IsEven(NumOfClicks)),但它会给出错误'IsEven在此上下文中不存在'。

    private void btnPlay_Click_1(object sender, EventArgs e)
    {
        NumOfClicks++;                                      
        btnPlay.Text = "Stop";
           filePath = @"TestTone.wav";
           WaveGenerator wave = new WaveGenerator();
           wave.Save(filePath);
           SoundPlayer player = new SoundPlayer(filePath);
           player.Play();

         if (IsEven(NumOfClicks))
          {
                   btnPlay.Text = "Play";
                   player.Stop();
                   filePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                   File.Delete(@"TestTone.wav");
          }


        }

我尝试创建一个单独的“停止”按钮,但是然后player.Stop()命令不起作用(播放器'在此上下文中不存在')。

我尝试使用带有NumOfClicks的开关,但在此上下文中出现相同的“播放器”错误。

如果有人有修复或更好的方法,我会非常感激!

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是使用两个按钮。对于初始开发,让它们在不同的位置都可见,直到启动/停止功能按照您需要的方式工作。

修复后,您可以堆叠两个按钮并在其上设置可见性标志,以设置显示哪一个,以及隐藏哪一个。

// WPF Sample Code
void buttonPlay_onClick()
{
   // Do something
   buttonPlay.Visible = Visibility.Visible;
   buttonStop.Visible = Visibility.Hidden;
}

void buttonStop_onClick()
{
   // Do something
   buttonPlay.Visible = Visibility.Visible;
   buttonStop.Visible = Visibility.Hidden;
}

如果您使用的是WinForms而不是WPF,则可见性开关将使用这些命令。

   buttonPlay.Visible = true;
   buttonStop.Visible = false;

通过使用两个按钮,您可以控制每个按钮的状态,从而简化代码以处理点击,而不是尝试跟踪点击次数或类似情况。如果按钮可见/活动,则用户可以单击该按钮并执行操作。