2015-05-19 95 views
-1

我在这里和其他地方看到了一些关于多功能按钮的文章,但我在实施他们的建议时遇到了困难。.wav文件的播放/暂停按钮

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

当按钮被点击时,我有按钮标签从“播放”更改为“停止”。 不幸的是,我不能让按钮作为“停止”。

我曾尝试创建一个“反”,

public static int NumOfClicks = 0; 

,做NumOfClicks ++每个按钮被点击的时间,那么如果(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的开关,但得到了相同的'播放器在此上下文中不存在'错误。

如果有人有修复或更好的方式做到这一点,我将不胜感激!

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

你在用什么..wpf,winforms? –

+0

嗨,我正在使用winforms,谢谢! –

回答

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; 

通过使用两个按键,可以控制何时每一个可以点击的状态,从而简化了代码来处理点击,而不是试图跟踪点击或相似的数量。如果按钮是可见/活动的,用户可以点击它并执行操作。