Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# .wav文件的播放/暂停按钮_C#_Button_Soundplayer - Fatal编程技术网

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

C# .wav文件的播放/暂停按钮,c#,button,soundplayer,C#,Button,Soundplayer,我在这里和其他地方看到了一些关于多功能按钮的帖子,但我在实施他们的建议时遇到了困难 我正在编写一个合成器,生成并保存一个.wav文件。 我有一个按钮,可以通过将声音播放器保存到“bin”来“不保存”播放声音,稍后我会将其删除。我意识到这不是播放声音的理想方式 当我点击按钮时,它的标签从“播放”变为“停止”。 不幸的是,我无法使按钮发挥“停止”的功能 我尝试过创建一个“计数器” public static int NumOfClicks = 0; 并在每次单击按钮时执行NumOfClic

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

我正在编写一个合成器,生成并保存一个.wav文件。 我有一个按钮,可以通过将声音播放器保存到“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()命令不起作用(player“在此上下文中不存在”)

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


如果有人有一个修复或更好的方法来做这件事,我会非常感激

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

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

// 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;

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

我已编辑了您的标题。请看“”,这里的共识是“不,他们不应该”。你在用什么…wpf,winforms?嗨,我在用winforms,谢谢!