C# 为什么赢了';这声音难道不停止播放吗?
我编写了这段代码,以便用户可以在我的应用程序中静音或取消静音C# 为什么赢了';这声音难道不停止播放吗?,c#,wpf,C#,Wpf,我编写了这段代码,以便用户可以在我的应用程序中静音或取消静音 private void VolumeButton_Click(object sender, RoutedEventArgs e) { if(Muted==false) { Muted = true; } if (Muted == true) { Muted = false; } } 我编写了如下soundplayer方法: public void p
private void VolumeButton_Click(object sender, RoutedEventArgs e)
{
if(Muted==false)
{
Muted = true;
}
if (Muted == true)
{
Muted = false;
}
}
我编写了如下soundplayer
方法:
public void playSound(string path)
{
var p1 = new System.Windows.Media.MediaPlayer();
if (Muted == false)
{
p1.Open(new Uri(path, UriKind.Relative));
p1.Play();
}
}
如果我单击“静音”按钮,应用程序不会在意,它仍会播放声音,好像什么都没发生过一样。如评论中所述(由BradleyDotNET提供),问题在您的
VolumeButton\u click
方法中。两个if语句都在执行中,这意味着已静音
将始终为false:
if (Muted == false)
{
Muted = true;
}
// Muted now equals true, regardless.
if (Muted == true)
{
Muted = false;
}
您需要的是if/else if
方法:
if (Muted == false)
{
Muted = true;
}
else if (Muted == true)
{
Muted = false;
}
逐步完成调试器。选择播放声音时,
静音的值在哪里设置?在playSound
方法之前还是之后?(我对这一点的理解有点不准确,请容忍我)如果mute
属性是System.Windows.Media.MediaPlayer()的一部分
,当您创建一个新的MediaPlayer
静音从何而来时,属性很可能被默认为true
?我会检查以确保当您在VolumeButton_Click()中设置此变量时,它与您在playSound()中检查的变量相同,您的单击处理程序总是将mute设置为false。您应该将整个内容替换为Muted=!沉默的代码>。然而,仅仅更新一个变量并不会停止已经播放的声音播放。谢谢blorgbeard!我不需要它来停止任何已经在运行的声音,我只是希望它在静音为真后停止播放新的声音。这解决了问题:)顺便说一句,为什么以前的点击处理程序总是将mute设置为false?读取它,再次读取它。。。在第二个if
之前,您需要一个else
。两个街区每次都跑。简单使用!避免了那个错误。