您的位置:首页 > 移动开发

【WP】ApplicationBarIconButton学习心得贴!

2011-11-22 09:51 148 查看
 
今天发现了一个问题,发上来跟大家分享一下。

     在ApplicationBar上面添加了个ApplicationBarIconButton按钮,并且设置Click事件,处理函数内容为:

private void ApplicationBarIconButton_Click(object sender, EventArgs e)

         {

             Thread.Sleep(1000);

             MessageBox.Show("content", "title", MessageBoxButton.OK);

         }

如果快速点击这个IconButton的话会造成程序崩溃,查找其原因为多次点击时在同时进行多次睡眠,睡眠完毕后在已经弹出MessageBox的情况需下再次弹出MessageBox。这是一个并发的过程。之后自己尝试了一下用普通的Button控件使用同样的事件处理函数,发现如果这样的话整个是一个串行的过程,即“睡眠—对话框—睡眠—对话框……”很有顺序。

      为了解决这个问题,最开始设置IconButton的Click时间内最开始将Enable属性设置为False,在Click函数的最后再改回True,可是看着实际的效果很别扭。所以自己就给MessageBox类做了点儿加工,自定义了一个类,去限制MessageBox的Show(),一下是自定义的类。原本是想override一下Show()方法的,可是微软吧在定义MessageBox的时候还加上了sealed,所以也就只能这么干了……

public sealed class MessageBoxDemo

         {

            static bool bShow;

            public static MessageBoxResult Show(string messageBoxText)

            {

                if (bShow)

                    return MessageBoxResult.None;

                else

                {

                    bShow = true;

                    MessageBoxResult returnValue = MessageBox.Show(messageBoxText);

                    bShow = false;

                    return returnValue;

                }

            }

            public static MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button)

            {

                if (bShow)

                    return MessageBoxResult.None;

                else

                {

                    bShow = true;

                    Thread.Sleep(1500);

                    MessageBoxResult returnValue = MessageBox.Show(messageBoxText,caption,button);

                    bShow = false;

                    return returnValue;

                }

            }

         }

如果大家有什么新的办法希望能够交流一下,我也是刚刚接触WP7这方面,如果有什么错误希望能够给指出来,谢谢了~
 
原作:wuliws
转自:http://www.devdiv.com/forum.php?mod=viewthread&tid=104785&fromuid=74503
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息