{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来破坏当前的对话框。
历史2010年7月,第12届:战后初期//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);
}