日期:2014-05-18  浏览次数:20788 次

Label的textChanged事件
做一个语音提示功能,当Label的Text发生变化时做相应的提示音

C# code

 switch (lblLogo.Text)
{
                case "您好,请上秤!":
                    PlaySound(@".\player\04.wav", IntPtr.Zero, 0x00020000 | 0x0001);
                    break;
                case "等待计量中。":
                    PlaySound(@".\player\01.wav", IntPtr.Zero, 0x00020000 | 0x0001);
                    break;
                case "车辆停稳,正在计量。":
                    PlaySound(@".\player\02.wav", IntPtr.Zero, 0x00020000 | 0x0001);
                    break;
                case "计量完毕,请下秤。":
                    PlaySound(@".\player\03.wav", IntPtr.Zero, 0x00020000 | 0x0001);
                    break;
 }



可是为什么lblLogo的文本为“计量完毕,请下秤”的时候,03.wav会循环播放呢? 文本没有变化,可是事件却不停地触发?01,02,04.wav都是正常的,只播放一遍。

------解决方案--------------------
lblLogo.Text=“计量完毕,请下秤。”执行完毕后,lblLogo.Text就不在变化03.wav(估计是程序一直在判断text的值),因而一直播放,而前面的文本是被后面的文本替换,所以会播放下一wav文件。

估计解决方法:
执行完
case "计量完毕,请下秤。":
PlaySound(@".\player\03.wav", IntPtr.Zero, 0x00020000 | 0x0001);
//循环体、Timer终止
break;

------解决方案--------------------
请先检查 switch (lblLogo.Text) 的 调用情况, 看他是调用1次 还是多次调用, 如果是调用1次 ,那么我认为应该是 声音文件的问题