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

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

c#
3

6个回答

0

这种问题狗无聊的。 。

0

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

0

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

0

自己创建一个窗体,就把那个窗体当初弹出框,拖个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();
    }
0

像这种情况只能自己写一个类型,继承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));
    }
}

}


-1
u012758945
Lee_Y_K 回复caoxwei2: 我上面没有用任何计时的类型,只是通过异步执行计时方法,如果你不理解委托、异步、回调等这些操作,建议你使用Timer类来完成计时功能。
3 年多之前 回复
u011475211
caoxwei2 我原本敲了一遍出现问题,shoeMethod.BeginInvoke(timeout,TimerCallback,timeout),报错,无法从System.Threading.TimerCallback转为System.AsyncCallback
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
弹出框显示2秒后,自动消失
jquery点击弹出提示窗口            显示2秒后消失的方法             jQuery(document).ready(function($) {             $('.theme-login').click(function(){                 $('.theme-popover-mask').fadeI
C#消息提示框,不需用户点确定,提醒后自动消失
不需要用户对消息提示点【确定】来响应 不阻塞、不干预用户的后续操作,提醒一下自动消失 有动画效果来保证消息的送达性,不会被用“被无视”
C# 对话框弹出后3秒关闭
自己最近在做个自动采集的小软件,需要对话框弹出后如果无人操作会自动关闭,继续执行后边的代码。 可是百度了大半天也没有找到满意的结果,偶然逛了下论坛翻出了这个东东 MessageBoxTimeout 以下是百度上的函数简介 MessageBoxTimeout是一个微软未公开的Windows API函数。实现定时消息,功能类似于MessageBox。如果用户不回应,能定时关闭消
QT 实现在一个模块中间显示一个红色提示框,3秒后消失
#include "dialog.h" #include "ui_dialog.h" #include #include Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog), label(new QLabel(this)) { ui->setupUi(t
jQuery实现点击弹出层3秒后自动消失
jQuery实现点击弹出层3秒后自动消失 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="../reset.css"> <link rel="stylesheet" typ
自动消失的消息提示(Js+Div实现)
var closetime; 2 3function showmsg(msg,showtime) 4{ 5 var md=document.getElementById(&quot;msgdiv&quot;); 6 md.innerHTML =&quot;&amp;nbsp;&quot;+msg+&quot;&amp;nbsp;&quot;; 7 md.visibility = &quot;visible&quot;; 8 if(close...
Bootstrap的popover(弹出框)2秒后定时消失
先在目标DOM结构中弹出小提示,然后2秒后提示消失function showPopover(target, msg) { target.attr("data-original-title", msg); $('[data-toggle="tooltip"]').tooltip(); target.tooltip('show'); target.focus();
wpf两种方式自动消失的提示框
wpf C# 提示框自动消失 messageBox、window两种方式
reactjs:在每个模块下定位提示内容展示,三秒后消失
import React, { Component } from 'react'; import classnames from 'classnames'; import './index.scss'; export class TipPopup extends Component { static propTypes: { content: PropTypes.str...
C#---------3秒钟后自动关闭MessageBox窗口
代码如下,可直接拿走用 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;using System.Runtime.InteropServices; using System....
js实现div显示2秒后自动消失
前言在做四象限的过程中会有提示的信息,但是想让提示信息在一定的时间后自动隐藏。如上图,2s后提示自动隐藏,怎么做呢?正文利用setTimeout(),setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。语法setTimeout(code,millisec)提示和注释setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 cod...
$.jBox 消息提示框 自动消失 与 确认消失
自动消失 $.jBox.tip(&quot;保存短信回复内容成功!&quot;); 确认消失 $.jBox.messager(&quot;保存短信回复内容成功!&quot;);
iOS 几秒后会自动消失提示框
tipWithMessage(@"没有数据啦!"); //提示弹窗 NS_INLINE void tipWithMessage(NSString *message){ dispatch_async(dispatch_get_main_queue(), ^{ UIAlertView *alerView = [[UIAlertView alloc] initWi...
vue 消息显示几秒后隐藏
template &amp;lt;template&amp;gt; &amp;lt;div id=&quot;anwser&quot;&amp;gt; &amp;lt;form @submit.prevent=&quot;submit&quot; novalidate=&quot;true&quot;&amp;gt; &amp;lt;textarea name=&quot;&quot; id=&quot;&quot; cols=&quot;30&quot; rows=&quot;10
显示一个提示框,几秒后显示框自动消失
问题:显示一个提示框,几秒后显示框自动消失 方案: 1.使用AlertView提示,但是使用AlertView提示后,需要点一个按钮才会消失。 此方案不行,因为提示框不会自动消失 2.向页面添加一个Label,然后使用延时函数,移除label //添加要用到的Label UILabel * label = [[UILabel alloc]initWithFrame:CGRectMa
提示框过几秒钟后自动关闭
提示框提示完成后,可以设定过几秒钟用户不操作的话,自动关闭
cocos2dx中实现自动消失的消息提示框
Toast是Android系统提供的一种非常好的提示方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何的屏幕空间. Toast.makeText(this,&quot;Hello!&quot;,Toast.LENGTH_SHORT).show(); 而在用cocos2dx进行游戏开发中,有时候我们也偶尔会用到这种自动消失到消息提示功能,那我们该如何实现呢? ...
webbrowse 自动关闭弹出对话框
关于 禁止弹出对话框,一下是在CSDN上看到的一种方式。这是弹出后自动关闭的方式,可参考 http://bbs.csdn.net/topics/210025478。 另一种情况,不允许弹出对话框,那这个方式就没用了,例如需要长期保持登录状态的网站,在弹出对话框后会自动退出登录,那么久需要禁止弹出,而不是 弹出后再自动关闭,此种方式则不可用。
错误弹窗2秒后消失
$('.pcbtel-pop').delay(2000).hide(0);
js实现浏览器右下角弹出提示信息窗口,几秒后自动关闭
js引入:    //import  //解决浏览器兼容性问题 //浏览器右下角消息提醒 封装一个方法 function msg(title,context){ $.messager.lays(200, 100); //窗口大小 $.messager.anim('fade', 2000);  $.messager.show(title, context,3000); //标题,内容
前端vue框架demo:一个弹窗消失,显示另一个弹窗
UI框架iview 第一步的弹框: &amp;lt;!-- _______________________________________________ MODAL _______________________________________________--&amp;gt;         &amp;lt;Modal class-name=&quot;add-members&quot; v-model=&quot;showAddMembe...
(Handler)按下按钮后间隔3秒自动弹出一个Toast显示当前时间,按返回时有弹出对话框提示是否退出程序,按确认后退出程序
编写一个程序,按下按钮后间隔3秒自动弹出一个Toast显示当前时间,按返回时有弹出对话框提示是否退出程序,按确认后退出程序 这是android studio文档,eclipse只需要借鉴代码复制粘贴即可
msgbox出现3秒自动消失
在我们的印象中,VB 所提供的 MsgBox 是一个强制回应的视窗,您一定要按了其中的某一个 CommandButton 之后,它才会关闭!但是在某些软体中,我们会看到,明明是使用系统的 MsgBox,可是您如果不理它,几秒钟之后,它就自行关闭了!别人是如何做到的呢?这个问题偶而会出现在讨论区中,有的人会回答: 只要自己做一个类似 MsgBox 的视窗,就可以自己用 Timer 来控制这个视窗何时要关闭了! 但是,其实不用这么麻烦的,只要使用系统的 MsgBox 再加一个 Timer 就可以控制了!
js弹出提示信息并自动关闭
这是一个demo,直接上代码: HTML> HEAD> TITLE> New Document TITLE> META NAME="Generator" CONTENT="EditPlus"> script type="text/javascript" src="/js/jquery/jquery-1.4.1.min.js">script> scri
bootstrap提示框定时消失
bootstrap设置时间可以提示框定时消失。
MessageBox提示框自动关闭
第一步:新建一个类库,如图: 第二步:添加两个类,CloseState.cs和ShowMsg.cs,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Model { public class CloseState {
点击弹窗提示,3秒后关闭窗口并跳转新开窗口
&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt; &amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot;&amp;gt; &amp;lt
网页打开后国图片显示几秒后自动消失
加载网页后,过几秒后自动消失加载网页后,过几秒后自动消失
弹出MessageBox并延迟一段时间后自动关闭的一种方法
从网上看到MessageBox会导致阻塞,要想延时后自动关闭只能发送Enter或者向指定窗口发送关闭消息。这些方法都比较麻烦,有一种更为简便的方法,思路是:在Form1里生成一个新的窗口Form2,Form2窗口不显示,使用MessageBox.Show()指定所有者是Form2,Form1的定时器延时一段时间后关闭Form2,这样一来关闭Form2的同时,MessageBox也被关闭了。   
jQuery 弹出窗口2秒后自动关闭
修改数据后需要给用户一个提示,下面是html代码: 可设置内容弹出层,2秒自动消失 .alertWindowContent h1,p{text-align: center;font-size: 18px;font-weight: bolder;} .alertWindowContent input{width: 100px; height:
Android延迟自动关闭Dialog
一般情况下,dialog可以设置positivebutton,negetiveButton,但是有时候为了展示进度,可以做一个假进程来显示一个progressDialog。当然,也可以依照如下方法在后台做一个进程监控器向handler传送标志位。 private static int MSG_DISMISS_DIALOG = 0; private Handler mHandler = n
QT QDialog 对话框显示几秒钟自动关闭
在实际开发中,我们会有这样一种需求,一个提示框,用户可以手动关闭,或者在用户没有操作的情况下,显示3秒钟然后自动关闭,这样应该怎样做呢?我们的思路应该是这样的:1.对话框构造函数里,设置一个定时器2.定时器槽函数设置为close()看代码.h#ifndef SUBMITSCOREERRORDLG_H #define SUBMITSCOREERRORDLG_H #include &amp;lt;QDial...
前端技术(2) : 1秒后消失的提示框
需引入 jQuery, 下载 jquery-1.11.3.min.js   图标下载     css   .i_class-alert { width: 30px; height: 30px; display: inline-block; margin-top: -5px; background: url(http://hbkj-pc-web...
pyqt4定时关闭消息框
# -*- coding: utf-8 -*- import sys import random from PyQt4.QtGui import * from PyQt4.QtCore import * class BaseProgressDialog(QMainWindow): def __init__(self, parent=None): super(BaseProg...
手机端dialog几秒钟后消失
  css:   .dialog { display:none;  position:fixed; top:50%; left:50%; width:5rem; height:1rem;         margin-left:-2.5rem;         margin-top:.5rem; line-height:1rem; color:#FFF; backgro...
使用MessageBoxTimeout自动关闭MessageBox对话框
使用微软未文档化的MessageBoxTimeout函数,可以延时自动关闭自身弹出的MessageBox对话框,各位不妨参考一下。
WPF编程,C#中对话框自动关闭的一种方法。
MessageBoxTimeout是一个微软未公开的Windows API函数。实现定时消息,功能类似于MessageBox。如果用户不回应,能定时关闭消息框。函数由user32.dll导出,windows2000及以下没有此函数。    原型: int MessageBoxTimeoutA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT ...
HTML 页面弹出一个图片 自动消失
适用于网站首页的提示 比如购物网站提示送积分等 首先需要一个放置图片的容器 &amp;lt;img src=&quot;#&quot; class=&quot;jump_img&quot;&amp;gt; 随后 需要给这个类一个样式 &amp;lt;style type=&quot;text/css&quot;&amp;gt; .jump_img {position:absolute; z-index:99999; width:80%; heigh...
Bootstrap 警告框自动关闭
Bootstrap 警告框自动关闭,其实就是延迟关闭警告框,代码如下window.setTimeout(function(){ $('[data-dismiss="alert"]').alert('close'); },2000);
iOS中可以设定时间自动消失提示框的三种实现方式
//============================================================================== #pragma mark - 一、显示定制View的消息,定时消失 //==============================================================================
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo