前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.Net WinForm 提示框自动关闭

.Net WinForm 提示框自动关闭

原创
作者头像
谭广健
修改2021-06-10 11:40:41
1.7K0
修改2021-06-10 11:40:41
举报
文章被收录于专栏:谭广健的专栏谭广健的专栏

最近在开发一个简单的WinForm应用软件(WinForm是·Net开发平台中对Windows Form的一种称谓)。功能也比较简单,就是通过云小程序生成相关资料,然后通过该软件进行校验;并且与云小程序的云数据库进行连接;原型功能基本完成。但遇到一个问题就是WinForm中的MessageBox,但出后需要人手进行确认,这个问题比较麻烦,于是自己动手弄了一个简单的类。

代码语言:javascript
复制
 public class MessageBoxTimeOut
    {
        private string _caption;
        public void Show(string text, string caption)
        {
            Show(3000, text, caption);//显示时间
        }
        public void Show(int timeout, string text, string caption)
        {
            Show(timeout, text, caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        public void Show(int timeout, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
        {
            this._caption = caption;
            StartTimer(timeout);
            MessageBox.Show(text, caption, buttons, icon);
        }
        private void StartTimer(int interval)
        {
            Timer timer = new Timer();
            timer.Interval = interval;
            timer.Tick += new EventHandler(Timer_Tick);
            timer.Enabled = true;
        }
        private void Timer_Tick(object sender, EventArgs e)
        {
            KillMessageBox();
            //停止计时器
            ((Timer)sender).Enabled = false;
        }
        [DllImport("User32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern int PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
        public const int WM_CLOSE = 0x10;
        private void KillMessageBox()
        {
            //查找MessageBox的弹出窗口,注意对应标题
            IntPtr ptr = FindWindow(null, this._caption);
            if (ptr != IntPtr.Zero)
            {
                //查找到窗口则关闭
                PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
            }
        }
    }

调用方式:

代码语言:javascript
复制
  MessageBoxTimeOut mb = new MessageBoxTimeOut();
   mb.Show(TXT, "提示(窗体3秒后自动关闭...)");

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档