代码如下所示:
里面注释的地方需要加一段消息处理程序,把屏幕刷新再发声,如何写?
labelnotice.Text="门票无效!";
panel1.BackColor = Color.Yellow;
strlastticketcode="";//希望在这里立刻把图片颜色改变过来,然后再发声。
//但是结果都要等声音发完了之后才能显示图片为黄色
try
{
this.MyAudioController.PlayWaveFile("done.wav"); }
catch
{
MessageBox.Show("PlayWaveFile failed. Wave file or speaker may not be present.", "PlayWaveFile");
}
里面注释的地方需要加一段消息处理程序,把屏幕刷新再发声,如何写?
labelnotice.Text="门票无效!";
panel1.BackColor = Color.Yellow;
strlastticketcode="";//希望在这里立刻把图片颜色改变过来,然后再发声。
//但是结果都要等声音发完了之后才能显示图片为黄色
try
{
this.MyAudioController.PlayWaveFile("done.wav"); }
catch
{
MessageBox.Show("PlayWaveFile failed. Wave file or speaker may not be present.", "PlayWaveFile");
}
解决方案 »
- C# 编程找不到类型或指令空间名的问题。。。急急急 跪谢啦。。
- 从父窗体进入子窗体时指定tabcontrol的tabpage
- 如何让TreeView控件的节点就象WINXP,2003的资源管理器一样有链接,点击就展开!!
- C# winform程序中如何向datagridview中添加一行
- 高手帮忙!!怎样垃圾回收呀!
- MDI主窗体最大化的时候能不能不覆盖桌面上的任务栏?
- HostsInit()和HostsInit(IAsyncResult ar)的异步在加treeview控件时出错.可再加100分
- 如何按照数组中的字典的key(int)来排序数组,谢谢!
- 在C#中怎样对一个字符串进行截取其中的某一部分?
- 十万火急。。。。。。关于获得局域网中的域名!!!!
- 自动登录网页问题
- Button问题求教
panel1.BackColor = Color.Yellow;
后加上
panel1.Refresh();
panel1.BackColor = Color.Yellow;
strlastticketcode="";//加入
Application.DoEvents();
或者把
panel1.Refresh();
改为
MethodInvoker mi = new MethodInvoker( panel1.Refresh );
panel1.Invoke( mi );
是pocket PC的程序
调Control.Invoke方法。
不过在ppc没有MethodInvoker 这个委托,要自己构造一个。
show个box,线程会被hold住,所以这个方法应该是不行的。开个线程没有问题。
1. pocket PC的程序不支持Invoke方法, 是支持的, 只是没有MethodInvoker 这个委托,要自己构造一个
2. 子线程中一般不能直接操纵主线程产生的控件, 调control.Invoke就可以操作了,而且在线程里调Invoke的,即使show一个dialog都不会被Hold住.3. 就楼主的这个问题, 可以把播放声音的放在一个线程运行,没那么复杂.没用必要用Invoke方法.
panel1.BackColor = Color.Yellow;
strlastticketcode="";
timer1.Enabled = true;
private void timer1_Tick(object sender, System.EventArgs e)
{
try
{
this.MyAudioController.PlayWaveFile("done.wav"); }
catch
{
MessageBox.Show("PlayWaveFile failed. Wave file or speaker may not be present.", "PlayWaveFile");
} timer1.Enabled = false;
}