返回首页

{A}简介
本文介绍一个简单的扩展,超时选项标准的MessageBox。如果使用定时事件自动显示消息框,这可能是非常有用的。在这种情况下,使用标准的MessageBox会导致很多在彼此顶部messageboxes应用程序的用户将非常刺激性。背景
我在我的24 / 7的基础上运行的应用程序中使用这个类。在应用程序失败的的情况下,我已显示给用户。如果用户没有看到/赠送给他的消息作出反应,我的应用程序仍然要采取一些行动。所以,一个可选的超时后,MessageBox是关闭。使用代码
代码中存在一个主类:msgBoxExt
和两个helper类:MsgBoxExtOptionsMsgBoxResultEventArgsmsgBoxExt用法msgBoxExt类
这个类有一个公共的方法。 show方法检查是否有一个MessageBox积极。如果是这样的:它什么也不做,如果在MsgBox模型,并关闭它,如果它不活跃。
GT; 0,如果超时,超时计时器启动。
一个本地MessageBox是一个线程开始:{C}
计时器滴答,目前的MessageBox是封闭和产生的一个结果事件是:

private static void timeoutTimer_Tick(object sender, EventArgs e)

        {

            // close current messagebox

            closeMessageBox(_currentOptions.caption);



            //fire result event

            onMsgBoxResultEvent(_currentOptions.resultReference, DialogResult.None);



            //dispose current options

    

            _currentOptions = null;

        } 

closemessagebox()使得使用killwindow()在其打开的两个原生功能的使用:FindWindow和SendMessage来破坏当前的对话框。
//method killwindow

        private static void KillWindow(string className, string title)

        {

            //find window handle

            IntPtr handle = FindWindow(className, title);

            

            //send destroy message

            SendMessage(handle, WM_NCDESTROY, (IntPtr)0, (IntPtr)0);

        }
历史2010年7月,第12届:战后初期

回答

评论会员:亚基布 时间:2012/01/26
!没有截图
评论会员:RozenOren 时间:2012/01/26
"模式"意味着什么呢?你平均模态
评论会员:?HeinM 时间:2012/01/26
大。我一直在寻找一段时间的方式自动关闭我的邮件。

我下载的演示,但在编译时发现,demo.cs是从示范项目中缺少。
你可以请更新项目。

感谢