C#如何自动关闭messagebox

兄弟,你这个问题是怎么实现的,可不可以把代码发出来参考一下。... 兄弟,你这个问题是怎么实现的,可不可以把代码发出来参考一下。 展开
 我来答
freeeeeewind
推荐于2017-09-21 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1356万
展开全部

对话框是模式窗口,显示后“焦点”在默认的按键上。显示对话框,同时启动定时器,延时一段时间后,利用代码向对话框发送按键Enter,模拟用户按下Enter键,达到自动关闭对话框的目的。

实现方法如下:

(1)在Visual Studio中新建一个“Windows 窗体应用程序”

(2)在Form1上布置一个Button和一个Timer

(3)窗体代码Form1.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            button1.Text = "显示对话框";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //启动定时器
            timer1.Interval = 3000;
            timer1.Start();
            // 显示对话框
            MessageBox.Show("3秒钟,这个对话框后自动关闭!", 
                "自动关闭的对话框", 
                MessageBoxButtons.YesNoCancel, 
                MessageBoxIcon.Information);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // 停止定时器
            timer1.Stop();
            // 向对话框发送按键 Enter
            SendKeys.Send("ENTER");
        }
    }
}

(4)运行效果

3秒以后……对话框关闭

掌经财富
推荐于2016-09-07 · TA获得超过272个赞
知道答主
回答量:49
采纳率:0%
帮助的人:51.1万
展开全部
直接上代码

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
namespace MyTest
...{
/**//// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
...{
private System.Windows.Forms.Button button1;
/**//// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
...{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/**//// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
...{
if( disposing )
...{
if (components != null)
...{
components.Dispose();
}
}
base.Dispose( disposing );
}

Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
...{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(176, 48);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(96, 24);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion

/**//// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
...{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
...{
StartKiller();
MessageBox.Show("这里是MessageBox弹出的内容","MessageBox");
MessageBox.Show("这里是跟随运行的窗口","窗口");
}

private void StartKiller()
...{
Timer timer = new Timer();
timer.Interval = 10000; //10秒启动
timer.Tick += new EventHandler(Timer_Tick);
timer.Start();
}

private void Timer_Tick(object sender, EventArgs e)
...{
KillMessageBox();
//停止计时器
((Timer)sender).Stop();
}

private void KillMessageBox()
...{
//查找MessageBox的弹出窗口,注意对应标题
IntPtr ptr = FindWindow(null,"MessageBox");
if(ptr != IntPtr.Zero)
...{
//查找到窗口则关闭
PostMessage(ptr,WM_CLOSE,IntPtr.Zero,IntPtr.Zero);
}
}

[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;
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanghao717
2010-06-18 · TA获得超过278个赞
知道答主
回答量:289
采纳率:0%
帮助的人:247万
展开全部
没问题,用一个时间控件就行了,代码如下,如果需要完整项目把邮箱给我,我发给你。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace FrmMsg
{
public partial class F_Msg : Form
{
public F_Msg()
{
InitializeComponent();
}
public void showMsg(string msgTxt,int Second)
{

timer.Interval = Second*1000 ;
timer.Start();
this.lab_Msg .Text = "信息: " + msgTxt;
this.Show();

}

private void timer1_Tick(object sender, EventArgs e)
{

this.Close();
}
}
}
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吾亦非汝
2010-06-18 · 超过10用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:0
展开全部
写一个MessageBox继承System.Windows.Form
然后添加一个Timer
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘湘叶雨
2010-06-18
知道答主
回答量:87
采纳率:0%
帮助的人:0
展开全部
添加一个Timer事件..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式