C#实现winform自动关闭MessageBox对话框的方法

本文实例讲述了C#实现winform自动关闭MessageBox对话框的方法。分享给大家供大家参考。具体实现方法如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication1
{
  public partial class AutoDeleteMessageBox : Form
  {
   [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;
   public AutoDeleteMessageBox()
   {
    InitializeComponent();
   }
   private void button1_Click( object sender, EventArgs e)
   {
    StartKiller();
    MessageBox.Show( "3秒钟后自动关闭MessageBox窗口" , "MessageBox" );
   }
   private void StartKiller()
   {
    Timer timer = new Timer();
    timer.Interval = 3000; //3秒启动
    timer.Tick += new EventHandler(Timer_Tick);
    timer.Start();
   }
   private void Timer_Tick( object sender, EventArgs e)
   {
    KillMessageBox();
    //停止Timer
    ((Timer)sender).Stop();
   }
   private void KillMessageBox()
   {
    //按照MessageBox的标题,找到MessageBox的窗口
    IntPtr ptr = FindWindow( null , "MessageBox" );
    if (ptr != IntPtr.Zero)
    {
     //找到则关闭MessageBox窗口
     PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
    }
   }
  }
}

猜你喜欢

转载自blog.csdn.net/sl1990129/article/details/80627968