C#关闭MessageBox消息框(转)
最近写的一代码中.需要弹出一消息框.提示一下用户..,可如果用户长时间不做交互..程序就会出现点小问题..
所以呢,,要在一定的时间内把MessageBox给关闭才行..
从网上找了找也没什么太好的方法...所以只能借鉴网上的资料(主要是API函数).再加上自己的的思路..呵呵..
看代码吧..
首先引用:
using System.Runtime.InteropServices;
其次在所定义的类里面添加上:
[DllImport("user32.dll", EntryPoint = "FindWindow", CharSet=CharSet.Auto)]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName); //用于找到MessageBox的句柄
[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd); //根据句柄关于MessageBox
在你想关闭MessageBox消息框的地方加上:
IntPtr ptr = FindWindow(null,"这里对应要关闭的MessageBox的标题");//查找MessageBox的弹出窗口,注意对应标题
if(ptr != IntPtr.Zero)
{
DestroyWindow(ptr); //查找到窗口则关闭
}
//继续执行其它代码...
一直到执行结束..但是结束会,程序会执行到弹出MessageBox消息框的下面的代码(我也不知道怎么回事)所以给用户看到是,主窗体没什么反映.所以.要在MessageBox消息框的下面的代码里添加上一个判断,看是否执行了关闭窗口的操作..根据其操作.自己规定程序跳到什么地方(是否执行了关闭窗口的操作:这里可用一个全局变量的标示位,当然也其它的信息...)
所以呢,,要在一定的时间内把MessageBox给关闭才行..
从网上找了找也没什么太好的方法...所以只能借鉴网上的资料(主要是API函数).再加上自己的的思路..呵呵..
看代码吧..
首先引用:
using System.Runtime.InteropServices;
其次在所定义的类里面添加上:
[DllImport("user32.dll", EntryPoint = "FindWindow", CharSet=CharSet.Auto)]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName); //用于找到MessageBox的句柄
[DllImport("user32.dll")]
static extern bool DestroyWindow(IntPtr hWnd); //根据句柄关于MessageBox
在你想关闭MessageBox消息框的地方加上:
IntPtr ptr = FindWindow(null,"这里对应要关闭的MessageBox的标题");//查找MessageBox的弹出窗口,注意对应标题
if(ptr != IntPtr.Zero)
{
DestroyWindow(ptr); //查找到窗口则关闭
}
//继续执行其它代码...
一直到执行结束..但是结束会,程序会执行到弹出MessageBox消息框的下面的代码(我也不知道怎么回事)所以给用户看到是,主窗体没什么反映.所以.要在MessageBox消息框的下面的代码里添加上一个判断,看是否执行了关闭窗口的操作..根据其操作.自己规定程序跳到什么地方(是否执行了关闭窗口的操作:这里可用一个全局变量的标示位,当然也其它的信息...)