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
  • 相关阅读:
    react中使用map时onClick事件失效
    【Taro全实践】Taro在微信小程序中的生命周期
    git的基本操作
    【Taro全实践】修改radio组件的大小
    react中回车enter事件处理
    安装nodejs 后运行 npm 命令无响应
    React中跨域问题的完美解决方案
    在React中修改antd的样式
    Linux 开机过程(转)
    Microsoft Windows XP Professional X64 Edition Corporate Keys
  • 原文地址:https://www.cnblogs.com/aijiao/p/10490675.html
Copyright © 2011-2022 走看看