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

简介: 本文主要是讲如何实现可设置指定时间自动消失的 MessageBox提示框ShowMessageBoxTimeout实现;在开发客户端应用程序的时候,经常用得WinForm中MessageBox提示框。

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

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

ShowMessageBoxTimeout实现

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);

        //三个参数:1、文本提示-text,2、提示框标题-caption,3、按钮类型-MessageBoxButtons ,4、自动消失时间设置-timeout
        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);
            }
        }
    }
}

ShowMessageBoxTimeout调用

//三个参数:1、文本提示,2、提示框标题,3、按钮类型,4、自动消失时间设置
ShowMsg.ShowMessageBoxTimeout("欢迎使用数据导出服务程序,本程序默认最小化到电脑托盘,1分钟后正式启动。", 
"程序启动温馨提示-窗口1分钟内无操作会自动关闭", MessageBoxButtons.OK, 1000 * 60 * 1);

希望以上分享对初学朋友有些帮助,谢谢!
更多关注付义方技术博客:http://blog.csdn.net/fuyifang
或者直接用手机扫描二维码查看更多博文:
付义方CSDN博客二维码

目录
相关文章
|
3月前
|
XML Java 开发工具
使用Snackbar显示短暂信息
使用Snackbar显示短暂信息
无法写入用户设置。请打开用户设置并清除错误或警告,然后重试。
无法写入用户设置。请打开用户设置并清除错误或警告,然后重试。
|
5月前
Win11关闭时间显示——强行修改右下角时间显示
Win11关闭时间显示——强行修改右下角时间显示
170 1
|
JavaScript 索引
el-dialog里的数组不更新,在关闭的一瞬间更新了
el-dialog里的数组不更新,在关闭的一瞬间更新了
343 0
|
Android开发
console可以设置成显示5秒后自动缩小到桌面吗?
console可以设置成显示5秒后自动缩小到桌面吗?
252 0
关于 QLineEdit设置QDoubleValidator设置范围无效问题 的解决方法
关于 QLineEdit设置QDoubleValidator设置范围无效问题 的解决方法
|
C# Windows
C# 程序关闭托盘图标不会自动消失
原文:C# 程序关闭托盘图标不会自动消失 c#程序关闭托盘图标不会自动消失,进程的托盘图标却不能随着进程的结束而自动消失  必须将鼠标移到图标上面时才能消失?  请问如何才能做到图标随着进程的结束而自动消失呢(外部强行结束,如在任务管理器将其结束), windows系统好多程序都会这样。
1260 0