zoukankan      html  css  js  c++  java
  • winform 关于Messagebox自动定时关闭

    添加一个类库MessageBoxTimeOut

       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)
                {
                System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
                    timer.Interval = interval;
                    timer.Tick += new EventHandler(Timer_Tick);
                    timer.Enabled = true;
                }
                private void Timer_Tick(object sender, EventArgs e)
                {
                    KillMessageBox();
                    //停止计时器
                    ((System.Windows.Forms.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);
                    }
                }
            }
    View Code

    调用

          MessageBoxTimeOut mb = new MessageBoxTimeOut();
                mb.Show("产品编码不存在!", "提示(窗体3秒后自动关闭...)");
    View Code
  • 相关阅读:
    论工作动力的来源是什么?答案是来自于实现自己的梦想
    向梦想者致敬
    内置函数,递归函数,模块与包,开发目录规范
    迭代器,生成器
    闭包函数,装饰器,语法糖
    函数对象,名称空间及查找,作用域
    函数调用与参数
    字符编码
    文件处理
    python 11.5数据类型及常用方法
  • 原文地址:https://www.cnblogs.com/aijiao/p/10490675.html
Copyright © 2011-2022 走看看