自动关闭Messbox

  /// <summary>
    /// 自动关闭Messbox
    /// </summary>
    public class MessageBoxAutoClose
    {
        System.Threading.Timer _timeoutTimer;
        string _caption;
        public MessageBoxAutoClose(string text, string caption, int timeout)
        {
            _caption = caption;
            _timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
                null, timeout, System.Threading.Timeout.Infinite);
            MessageBox.Show(text, caption);
        }
        public MessageBoxAutoClose(string text, string caption, MessageBoxButtons msgButton, int timeout)
        {
            _caption = caption;
            _timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
                null, timeout, System.Threading.Timeout.Infinite);
            MessageBox.Show(text, caption, msgButton);
        }

        public MessageBoxAutoClose(string text, string caption, MessageBoxButtons msgButton, MessageBoxIcon msgIcon, int timeout)
        {
            _caption = caption;
            _timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
                null, timeout, System.Threading.Timeout.Infinite);
            MessageBox.Show(text, caption, msgButton, msgIcon);
        }

        /// <summary>
        /// 提示关闭
        /// </summary>
        /// <param name="text">显示提示内容</param>
        /// <param name="caption">标题</param>
        /// <param name="timeout">设定指定毫秒后关闭</param>
        public static void Show(string text, string caption, int timeout = 2000)
        {
            new MessageBoxAutoClose(text, caption, timeout);
        }
        /// <summary>
        /// 提示关闭
        /// </summary>
        /// <param name="text">显示提示内容</param>
        /// <param name="caption">标题</param>
        /// <param name="msgButton">提示按钮</param>
        /// <param name="timeout">设定指定毫秒后关闭</param>
        public static void Show(string text, string caption, MessageBoxButtons msgButton, int timeout = 2000)
        {
            new MessageBoxAutoClose(text, caption, msgButton, timeout);
        }
        /// <summary>
        /// 提示关闭
        /// </summary>
        /// <param name="text">显示提示内容</param>
        /// <param name="caption">标题</param>
        /// <param name="msgButton">提示按钮</param>
        /// <param name="msgIcon">提示图标</param>
        /// <param name="timeout">设定指定毫秒后关闭</param>
        public static void Show(string text, string caption, MessageBoxButtons msgButton, MessageBoxIcon msgIcon, int timeout = 2000)
        {
            new MessageBoxAutoClose(text, caption, msgButton, msgIcon, timeout);
        }

        void OnTimerElapsed(object state)
        {
            IntPtr mbWnd = FindWindow(null, _caption);
            if (mbWnd != IntPtr.Zero)
                SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
            _timeoutTimer.Dispose();
        }
        const int WM_CLOSE = 0x0010;
        [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
    }
时间: 2024-09-28 12:12:41

自动关闭Messbox的相关文章

C#自动弹出窗口并定时自动关闭

最近做个小项目,用到一个小功能:后台线程定时查询数据库,不符合条件的记录弹出消息提醒(在窗口最前面),并且过几秒钟再自动关闭弹出的窗口. 所以从网上找来资料,如下: WinForm 下实现一个自动关闭的MessageBox Author: eaglet      WinForm 下我们可以调用MessageBox.Show 来显示一个消息对话框,提示用户确认等操作.在有些应用中我们需要通过程序来自动关闭这个消息对话框而不是由用户点击确认按钮来关闭.然而.Net framework 没有为我们提供

Bootstrap中DropDown插件显示下拉列表,点击下拉列表区域,不会再自动关闭。

目标: 参考:http://v3.bootcss.com/javascript/#dropdowns    // http://stackoverflow.com/questions/19740121/keep-bootstrap-dropdown-open-when-clicked-off 实现方法:判断点击发生在下拉列表区域,阻止向上冒泡事件.这样在点击其他区域时,也能够自动关闭该下拉列表区域. <script> $(function () { $(".dropdown-menu

JavaScript自动关闭窗口

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JavaScript自动关闭窗口</

oracle的环境配置-设置开机(Linux)自动启动Oracle关机自动关闭Oracle

设置开机(Linux)自动启动Oracle关机自动关闭Oracle 1.切换到root用户下,确认启动文件和关闭文件是存在[[email protected] bin]$ pwd/u01/oracle/product/10.2.0/db_1/bin[[email protected] bin]$ ls dbstartdbstart                              --sqlplus执行startup的时候调用的脚本[[email protected] bin]$ ls

android EditText自动弹出和自动关闭软键盘

程序进入某个activity直接弹出软键盘,不能直接在OnCreate中设置,必须等View绘制事件完毕才可以弹出,需要用到Timer辅助实现,如果要实现输入的功能,必须让EditText获得焦点. //应用启动后自动打开输入法 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Timer ti

bootstrap下使用模态框,在模态框内输入框中回车时,模态框自动关闭的问题及解决方法

使用bootstrap下模态框,构建表单提交页面,但是输入框中直接回车,本来是想执行一下验证,但是却导致模态框自动关闭了. 遇到这样的问题,只需要先禁止回车触发表单提交            $(document).keydown(function(event){                   if (event.keyCode == 13) {                         $('form').each(function() {                     

Exchange 2007 传输服务自动关闭故障解决方案

故障描述:新建邮件无法发出(outlook客户端现象),新建邮件发送,自动退回草稿箱(WebMail故障现象). 故障原因:在系统服务中(Services),发现Exchange 传输服务自动关闭.(根据程序日志核查是由于:传输邮件数据库,验证失败,因时间戳不匹配.) 解决方案: 首先进入Exchange服务器操作系统,打开"事件查看器",点击应用日志记录,确定故障的原因: 在运行中键入"services.msc",进入系统服务,找到"MS Exchang

Spring+Redis(keyspace notification)实现定时任务(订单过期自动关闭)

1.起因 最近公司项目要做订单超期未支付需自动关闭,首先想到的是用spring的定时器(@Schedule),结果领导举各种例子说会影响性能,只能作罢.后来想能不能基于redis实现,学习(baidu)之后,大概就是使用redis的Keyspace Notifications,大概就是利用该机制可以在key失效之后,提供一个回调,实际上是redis会给客户端发送一个消息.是需要redis版本2.8以上,conf配置需设置notify-keyspace-events Ex,请示领导之后也得到了同意

【SCO】利用SCO流程自动关闭SCOM警报

SCO自动关闭警报流程方案 ----利用SCO流程自动关闭警报规则产生的警报 背景 SCOM规则类警报评估是否能实现状态恢复后告警自动关闭,包括SCO流程触发的警报也一样要实现状态恢复后告警自动关闭: 跟进结果:微软已经给予答复,规则类警报在处理故障恢复后是不会自动关闭的,这个在产品设计初衷就是这样设计,故没有解决方案,拒绝开case. 建议方案:微软建议设置定时自动关闭(目前默认为7天),不过这种方案对环境来说无意义. SCOM警报主要是存在两类警报:警报监视器.警报规则. 由于SCOM自身设