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
  • 相关阅读:
    HDU 1560 DNA sequence (迭代加深搜索)
    POJ-1077 HDU 1043 HDU 3567 Eight (BFS预处理+康拓展开)
    CSUST 1011 神秘群岛 (Dijkstra+LCA)
    LCA 倍增
    HDU 1003 Max Sum 求区间最大值 (尺取法)
    Codeforce 867 C. Ordering Pizza (思维题)
    POJ 3349 Snowflake Snow Snowflakes (Hash)
    POJ 2774 Long Long Message (Hash + 二分)
    POJ 1200 Crazy Search (Hash)
    前端面试总结(转)
  • 原文地址:https://www.cnblogs.com/aijiao/p/10490675.html
Copyright © 2011-2022 走看看