c#弹出一个消息框,3秒后自动消失

问题描述

c#弹出一个消息框,3秒后自动消失

发现c#中MessageBox没有构造函数,无法生成对象,就无法销毁对象,请问如何实现这个功能?

解决方案

http://nxhujiee.blog.163.com/blog/static/298444220155238351302/
http://www.cnblogs.com/ap0606122/archive/2012/10/23/2735325.html
http://blog.csdn.net/huangshunle/article/details/8553283

解决方案二:

jQuery实现点击弹出层3秒后自动消失
winform C#屏幕右下角弹出消息框,自动消失

解决方案三:

这种问题狗无聊的。 。

解决方案四:

使用Form自定义一个MessageBox,使用定时器再

解决方案五:

当窗口显示的时候开始获取系统时间,然后开始计时,当后一次获取的系统时间减去第一次获取的系统时间得到的结果为3秒时此时执行关闭窗口动作

解决方案六:

像这种情况只能自己写一个类型,继承Form的,我简单写了一个,参考下。
需要注意的地方是要窗体创建句柄之后(调用Show或者ShowDialog方法后),才能访问某些窗体的方法。
using System;
using System.Threading;
using System.Windows.Forms;

namespace WindowsForm
{
public class MessageBoxTimer : Form
{
private void InitializeComponent()
{
this.button1 = new Button();
this.button2 = new Button();
this.label1 = new Label();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(51, 127);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "确定";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new EventHandler(button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(154, 127);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 1;
this.button2.Text = "取消";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new EventHandler(button2_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(49, 33);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(0, 12);
this.label1.TabIndex = 2;
//
// MessageBoxTimer
//
this.ClientSize = new System.Drawing.Size(284, 162);
this.Controls.Add(label1);
this.Controls.Add(button2);
this.Controls.Add(button1);
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(300, 200);
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(300, 200);
this.Name = "MessageBoxTimer";
this.ResumeLayout(false);
this.PerformLayout();

    }

    public MessageBoxTimer()
    {
        InitializeComponent();
        Text = "提示";
    }
    private Button button1;
    private Label label1;
    private Button button2;

    private delegate void SetTimeoutInfo(int timeover);

    private delegate void NoParameterDelegate();

    private string Title;
    /// <summary>
    /// 显示指定时间
    /// </summary>
    /// <param name="timeout"></param>
    public void ShowDialog(int timeout)
    {
        Title = Text;
        Text = "(" + timeout + "秒后关闭)" + Title;
        SetTimeoutInfo showMethod = ShowTimeout;
        showMethod.BeginInvoke(timeout, TimeoutCallback, timeout);
        DialogResult = ShowDialog();
    }
    /// <summary>
    /// 计时方法
    /// </summary>
    /// <param name="timeout"></param>
    private void ShowTimeout(int timeout)
    {
        SetTimeoutInfo setText = TimeoutInfo;
        while (timeout-- > 0)
        {
            Thread.Sleep(1000);
            if (IsHandleCreated) { Invoke(setText, timeout); }
        }
    }
    /// <summary>
    /// 显示内容
    /// </summary>
    public string Content { get { return label1.Text; } set { label1.Text = value; } }
    /// <summary>
    /// 显示超时信息
    /// </summary>
    /// <param name="timeout"></param>
    private void TimeoutInfo(int timeout)
    {
        Text = "(" + timeout + "秒后关闭)" + Title;
    }
    /// <summary>
    /// 计时完成回调
    /// </summary>
    /// <param name="result"></param>
    private void TimeoutCallback(IAsyncResult result)
    {
        DialogResult = DialogResult.None;
        if (IsHandleCreated) Invoke(new NoParameterDelegate(Hide));
    }
    /// <summary>
    /// 确定按钮
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.OK;
        Invoke(new NoParameterDelegate(Hide));
    }
    /// <summary>
    /// 取消按钮
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button2_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.Cancel;
        Invoke(new NoParameterDelegate(Hide));
    }
}

}


解决方案七:

自己创建一个窗体,就把那个窗体当初弹出框,拖个Timer控件
// 自动关闭的时间限制,如3为3秒后自动关闭
private int second=3;
// 计数器,用以判断当前窗口弹出后持续的时间
private int counter;
public TimingMessageBox()
{
InitializeComponent();
}

    public TimingMessageBox(string message, int second)
    {
        InitializeComponent();
        // 显示消息
        this.labelMessage.Text = message;
        this.second = second;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        // 如果没有到达指定的时间限制
        if (this.counter <= this.second)
        {
            // 刷新按钮的文本
            //this.buttonOK.Text = string.Format("确定({0})", this.second - this.counter);
            this.buttonOK.Text = string.Format("确定");
            this.Refresh();
            // 计数器自增
            this.counter++;
        }
        // 如果到达时间限制
        else
        {
            // 关闭timer
            this.timer1.Enabled = false;
            this.timer1.Stop();
            // 关闭对话框
            this.Close();
        }
    }

    private void TimingMessageBox_Load(object sender, EventArgs e)
    {
       // this.labelMessage.Text = "请将衣服放置于门板上!";
        // 获得时间限制
        this.second = second;
        // 初始化计数器
        this.counter = 0;
        // 初始化按钮的文本
       // this.buttonOK.Text = string.Format("确定({0})", this.second - this.counter);
        this.buttonOK.Text = string.Format("确定");
        this.timer1.Enabled = true;
        this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
        this.timer1.Interval = 1000;
        this.timer1.Start();
    }

    private void buttonOK_Click_1(object sender, EventArgs e)
    {
        // 单击确定按钮,关闭对话框
        this.Close();
    }
时间: 2024-12-31 13:25:42

c#弹出一个消息框,3秒后自动消失的相关文章

C# 仿制QQ弹出新闻消息框

原文:C# 仿制QQ弹出新闻消息框 打开QQ的时候,QQ新闻弹出窗体在屏幕的右下角就会慢慢升起一个小窗口,占用的地方不大,可以起到提示的作用.下面就让我们来看看,怎样用系统API来轻松实现这个功能. API原型函数: bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); 从字面的意思来看,这个函数名为"活动的窗口",事实上也如此,通过这个函数,可以使我们的窗体动作丰富起来,要在c#中使用winApi首先引入命名空间:  vi

关于微信开发,jsp页面上弹出一个文本框

问题描述 关于微信开发,jsp页面上弹出一个文本框 微信开发不支持 prompt ,怎么样点击一个按钮然后弹出一个输入框?求大神帮助 解决方案 给按钮就一个click事件,,里面动态生成一个文本框就行了,,, 解决方案二: 是弹出一个文本框还是显示一个文本框?如果是显示一个文本框那就使用js,加入一个点击事件,动态生成或事先预备好文本框都可以.如果是弹出文本框的效果,那就可以采用第三方插件bootstrap或jqueryUI去实现

opengl-一个雪人程序,但是雪人无法显示出来,只弹出一个黑框,咋改呢?

问题描述 一个雪人程序,但是雪人无法显示出来,只弹出一个黑框,咋改呢? #include //旋转参数 static GLfloat xRot = 180; static GLfloat yRot = 180; void doMyInit() { glClearColor(0.0, 0.0, 0.0, 0.0); // Set the clear color to black // Specify the boundaries of the viewing window glMatrixMode

拜托了急死了我-如何在本页弹出一个dialog框

问题描述 如何在本页弹出一个dialog框 在使用weui写一个网页,网页上有一个超链接,想通过点击超链接,得到一个在本页面上弹出一个weui 的dialog对话框.求助,希望能够解答. 解决方案 Android 关于Dialog弹出框jquery dialog-优雅的弹出框jsp页面的弹出框(art.dialog)例子 解决方案二: https://github.com/weui/weui 压缩包里面有示例

JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)_javascript技巧

本文实例讲述了JS+CSS实现鼠标经过弹出一个DIV框效果.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

android-安卓开发中,点击卸载按钮,弹出一个提示框

问题描述 安卓开发中,点击卸载按钮,弹出一个提示框 解决方案 http://www.cnblogs.com/zealotrouge/p/3159772.html 解决方案二: 给按钮注册onCLick()事件,在里面实现弹出一个dialog就可以了很简单,很多书上都有参考程序 解决方案三: 你要的是这种效果吧: //packageName是要卸载的包名,比如百度贴吧是com.baidu.tieba Uri uri = Uri.parse("package:" + packageName

页面弹出一个提示框,menu的样式改变

问题描述 各位大侠:我在页面放置了一个menu控件,原来的格式是横着的,但是从页面弹出一个提示框后,menu内容变为竖直的,点击确定提示框后恢复正常.怎么改啊? 解决方案 解决方案二:附上图片[img=http://hi.csdn.net/space-10244376-do-album-picid-1004227.html][/img][img=http://hi.csdn.net/space-10244376-do-album-picid-1004227.html][/img]解决方案三:解决

android-Android 我想一个popupwindow10秒后自动消失 应该怎么办??

问题描述 Android 我想一个popupwindow10秒后自动消失 应该怎么办?? Android 我想一个popupwindow10秒后自动消失 应该怎么办?? 解决方案 参考:http://www.cnblogs.com/Amandaliu/archive/2012/01/18/2325683.html 解决方案二: android的几种定时方式http://blog.csdn.net/yhm2046/article/details/8213629 在定时10秒后 popupwindo

js弹出对话框(消息框、警告框)

  警告(alert) 在访问网站的时候,你遇到过这样的情况吗?"咚"的一声,一个小窗口出现在你面前,上面写着一段警示性的文字,或是其它的提示信息.如果你不点击确定,你就不能对网页做任何的操作.没错,这个"咚"的小窗口就是alert干的. 下面的代码是一段使用alert的实例.  代码如下 复制代码 <script type="text/JavaScript">      alert("我是菜鸟我怕谁"); <