所以我正在使用使用最新的c#框架的win表格应用程序。
这里我有一个播放声音(星号)的按钮,然后在5秒钟或20秒钟后(我让用户选择),我希望它播放不同的声音(在这种情况下为哔声),但是当它调用代码时发出哔的声音,我听到的是星号。
最后,我想要另一个声音来表示它已经结束。我选择了(感叹号),但我再次听到星号。
有人知道为什么我只会听到一个声音吗?
P.S。我尝试将开始声音切换为哔声,将“下一个”声音切换为星号。我清理并重建,但是然后听到的唯一声音是哔声。
这是按钮单击的代码
private void btnStart_Click(object sender, EventArgs e)
{
BusinessLayer.ToneApp.PlaySound play = new BusinessLayer.ToneApp.PlaySound();
_countDown = play.IsValid(txtTime.Text);
numreps = play.IsValid(txtReps.Text);
numsets = play.IsValid(txtSets.Text);
lblFinished.Text = "";
play.PlaySoundStart();
_timer = new System.Windows.Forms.Timer();
_timer.Enabled = true;
_timer.Tick += new EventHandler(timer1_Tick);
_timer.Interval = 1000;
_timer.Start();
}
在timer1_tick事件中我有
private void timer1_Tick(object sender, EventArgs e)
{
BusinessLayer.ToneApp.PlaySound play = new BusinessLayer.ToneApp.PlaySound();
_countDown--;
if (_countDown < 1)
{
//my code
play.PlaySoundNext();
}
}
最后是我的演奏声
public class PlaySound
{
public void PlaySoundStart()
{
System.Media.SystemSounds.Asterisk.Play();
}
public void PlaySoundNext()
{
System.Media.SystemSounds.Beep.Play();
}
public void PlaySoundStop()
{
System.Media.SystemSounds.Exclamation.Play();
}
public int IsValid(string textToInt)
{
int.TryParse(textToInt, out int timeInSeconds);
return timeInSeconds;
}
}
答案 0 :(得分:-1)
您不应期望SystemSounds
有任何特定的声音,因为用户可以更改它们。呼叫Beep
或Asterisk
发出信号或引起更多注意。我认为Hand
的意思是表示事件突然停止或以异常方式停止。有一个broader answer与此相关,它还指出了将自己的系统声音添加到Windows中的可能性。
在Windows的最新版本中,Asterisk
,Beep
和Exclamation
的默认声音似乎都是相同的。我在Windows 10版本1909上进行了检查。Hand
不同,Question
完全没有声音。我猜是这样写的,因为前三个不能互换使用,原因是不清楚何时合适使用它们。 Question
声音可能已被删除,因为即使没有声音,带有问题的提示也很烦人。
您可以将自己的声音嵌入到应用程序中。为此,您可以签出System.Media.SoundPlayer
。可以使用Assembly.GetManifestResourceStream
加载嵌入式资源。另外,可以将声音文件添加到资源文件,并通过自动生成的类进行访问。