可设置指定时间自动消失的 MessageBox

本文主要是讲如何实现可设置指定时间自动消失的 MessageBox提示框

在开发客户端应用程序的时候,经常用得WinForm中MessageBox提示框。但是有时候还是满足不了一些用户要求,客户要求千奇百怪,例如客户需要做某些提示的时候,不去点击确定或取消的时候,等待一段时间自动消失,为此我们可以使用下面类来实现,采用 Thread.Sleep来关掉当前提示框,具体代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Threading;

namespace Tools.App
{
    public class ShowMsg
    {

        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll")]
        static extern bool EndDialog(IntPtr hDlg, out IntPtr nResult);

        public static void ShowMessageBoxTimeout(string text, string caption,
            MessageBoxButtons buttons, int timeout)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(CloseMessageBox),
                new CloseState(caption, timeout));
            MessageBox.Show(text, caption, buttons);
        }

        private static void CloseMessageBox(object state)
        {
            CloseState closeState = state as CloseState;

            Thread.Sleep(closeState.Timeout);
            IntPtr dlg = FindWindow(null, closeState.Caption);

            if (dlg != IntPtr.Zero)
            {
                IntPtr result;
                EndDialog(dlg, out result);
            }
        }
    }
}

希望以上分享对初学朋友有些帮助,谢谢!

更多关注付义方技术博客:http://blog.csdn.net/fuyifang

或者直接用手机扫描二维码查看更多博文:

时间: 2024-10-11 12:07:09

可设置指定时间自动消失的 MessageBox的相关文章

在域控制器上设置NTP时间自动同步的组策略,使域中所有客户机的时间保持一致

默认情况下,客户机会定时与域控制器同步时间,但有些时候客户机却不能与域控制器进行时间同步,出现这种情况往往是因为使用了ghost镜像安装系统的结果,某些ghost镜像系统为了精简系统服务,关闭了Windows Time服务,而Windows Time服务是时间同步所依赖的服务,所以设置NTP之前,必须保证客户机的Windows Time服务是已启动和自动启动状态. 在域控制器上设置NTP,网络上的教程也很多,都有涉及到修改注册表,本人经过试验后发现,修改注册表是非必要的,只需要创建修改组策略即可

通过Shell+atd定时任务,实现jenkins指定时间自动发布任务

我们公司是通过Git+Jenkins+Shell+Docker实现自动化更新发布. 这里我说下我是如何用Shell+atd服务,在晚上21:00自动完成领导交代的某个项目上线操作.要注意的是,这个上线项目和上线时间是不固定的!注意:这个跟jenkins的定时任务不同,jenkins定时任务是循环任务,这个是一次性的,需要人工设定好. CTO规定每天21:00后才可以网站发布,下班时,开发告知我API项目晚上9点要上线.TM的回去打LOL或有事情容易搞忘了(CTO说:我希望这种事情以后不要发生!!

在域控制器上设置NTP时间自动同步的组策略,使域中所有客户机的时间保持一致

默认情况下,客户机会定时与域控制器同步时间,但有些时候客户机却不能与域控制器进行时间同步,出现这种情况往往是因为使用了ghost镜像安装系统的结果,某些ghost镜像系统为了精简系统服务,关闭了Windows Time服务,而Windows Time服务是时间同步所依赖的服务,所以设置NTP之前,必须保证客户机的Windows Time服务是已启动和自动启动状态. 在域控制器上设置NTP,网络上的教程也很多,都有涉及到修改注册表,本人经过试验后发现,修改注册表是非必要的,只需要创建修改组策略即可

iOS中可以设定时间自动消失提示框的三种实现方式

//============================================================================== #pragma mark - 一.显示定制View的消息,定时消失 //============================================================================== +(void)showMessage:(NSString *)message duration:(NSTim

【转】Expire Google Drive Files 让Google Docs云盘共享连接在指定时间后自动失效

最近在清理Google Docs中之前共享过的文件链接,发现Google Docs多人协作共享过的链接会一直存在,在实际操作中较不灵活.正好订阅的RSS推送了Pseric写的这篇文章 - Expire Google Drive Files 让Google 云端硬碟共用连结在指定时间后自动失效,文中介绍的Expire Google Drive Files可以让Google  Docs云盘共享连接在指定时间后自动失效解决了指定时间内权限失效的问题. —————————————————————————

linux设置长时间不操作自动断开连接

vim /etc/profile.d/tmout.sh TMOUT=300 #readonly  TMOUT export  TMOUT source /etc/profile.d/tmout.sh TMOUT:设置超时时间 readonly:设置变量为只读

设置PLSQL启动自动登录指定数据库

设置PLSQL启动自动登录数据库 在做公司的项目中,有多个测试环境,在deubg问题时经常要连不同的数据库.虽然PLSQL可以保存登录用户名和密码,但是每次选择的时候在一排数据库中选择的时候很容易看花眼,就想有没有什么便捷的方法可以直接登录数据库. 在看PLSQL的帮助文档时,发现33.4有这么一段话: userid Every time you start PL/SQL Developer, it will prompt you for at least the password. To av

js指定时间之后跳转到指定页面代码实例

js指定时间之后跳转到指定页面代码实例:在某些场景下,需要网页在指定的时间后,网页能够自动跳转到指定页面,比如在无法找到指定网页的情况下,就会显示之前设置好的404页面,并且跳转到指定的页面,下面就是一段代码实现了此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="htt

更新数据时如何使时间自动更新

更新数据时不能使用time类型 使用timestamp类型才可以自动获取当前系统时间 TIMESTAMP的变体 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  在创建新记录和修改现有记录的时候都对这个数据列刷新 2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP  在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它 3,TIMESTAMP ON UPDATE CURRE