首页 > 编程语言 >C#倒计时关闭提示框

C#倒计时关闭提示框

时间:2023-07-21 15:34:26浏览次数:42  
标签:string C# void System 倒计时 caption using 提示框 public

前两天实现某个功能需要做一个提示框 并且能够自动关闭的,就从网上搜了一个能够自动关闭的提示框 ,但由于我需要的场景是不确定计时时间的,所以并没有使用到该窗体,但是我觉得可以留存备用 ,后边也把我

这种倒计时的提示框用处还是很多的,用于自动弹窗 自动关闭 ,虽然在我的项目中没有

其核心方法在 timer(TimerCallBack,Object,int32,int32) TimerCallBack 是一个委托 ,代表要执行的方法,其用途可以用在各个定时去调用方法的场景,而且可以设置窗体的FormBorderStyle的属性为None,设置窗体边框和标题栏外观不显示.

 

 以下为网上找的一段代码实现的定时关闭窗体的功能  ,但由于是之前找的,已经找不到原作者,在此表示十分抱歉

以下代码非本人编写:

复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Demo
{
    public partial class AutoCloseMessageBox : Form
    {
        public AutoCloseMessageBox()
        {
            InitializeComponent();
        }
        public void getMassage(string text)
        {
            label1.Text = text;
        }

        public void GetText(string caption)
        {
            this.Text = caption;
        }

        System.Threading.Timer _timeoutTimer;
        string _caption;
       
        AutoCloseMessageBox(string text, string caption, int timeout)
        {
            _caption = caption;
            _timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
                null, timeout, System.Threading.Timeout.Infinite);
           
            AutoCloseMessageBox m_MassageBox = new AutoCloseMessageBox();
m_MassageBox.getMassage(text); m_MassageBox.GetText(caption); m_MassageBox.ShowDialog(); public static void Show(string text, string caption, int timeout) { new AutoCloseMessageBox(text, caption, timeout); } void OnTimerElapsed(object state) { IntPtr mbWnd = FindWindow(null, _caption); if (mbWnd != IntPtr.Zero) SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); _timeoutTimer.Dispose(); } const int WM_CLOSE = 0x0010; [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)] static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); } }
复制代码

调用时直接使用类名.show(text,captiom,timeout) 直接调用即可

 

下边是当时的项目使用场景的解决办法

复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NewuView.Mix
{
    public partial class ErrorForm : Form
    {
        public ErrorForm()
        {
            InitializeComponent();
        }

        private void BarcodeErrorForm_Load(object sender, EventArgs e)
        {
            this.ShowInTaskbar = false;
        }

        public void Clear()
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new MethodInvoker(Clear));
            }
            else
            {
                this.richTextBox1.Clear();
            }
        }


        public void SetMsg(string msg)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new Action<string>(SetMsg), msg);
            }
            else
            {
                this.richTextBox1.AppendText(msg + Environment.NewLine);
            }
        }

        public Point Point1 { get; set; }
        public void ShowForm()
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new MethodInvoker(ShowForm));
            }
            else
            {
                this.Location = Point1;
                this.BringToFront();
                this.Visible = true;
            }
        }

        public void HideForm()
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new MethodInvoker(HideForm));
            }
            else
            {
                this.richTextBox1.Clear();
                this.Visible = false;
            }
        }
       
    }
}
复制代码

该窗体可以用于实时监控某一个状态时 而弹出的提示框 并根据状态改变而隐藏 

使用时,new一个该errorForm

在该窗体有一个RichTextBox,用来显示提示信息,使用SetMsg,设置要显示的信息

需要弹出时,实例调用Show()方法  实际就是讲该窗体的visible属性置为true,让窗体显示,并且调用Clear方法,清除提示信息

需要隐藏时,实例调用HideForm()方法,将窗体visible属性设置为false,调用clear方法,清除提示信息

 

 

 

出处:https://www.cnblogs.com/pandefu/p/11204134.html

标签:string,C#,void,System,倒计时,caption,using,提示框,public
From: https://www.cnblogs.com/mq0036/p/17571501.html

相关文章

  • Go:Missing type in composite literal
    在使用含字符串数组的结构体时,我出现了以下问题1packagemain23import"github.com/gin-gonic/gin"45typeMyJsonstruct{6Functions[]string`json:"functions"`7Descstring`json:"desc"`8}910funcmain(){11......
  • Silverlight工作流控件功能缺失,Windows Server操作系统 IIS添加WCF功能
    注:Silverlight工作流控件,如果在网页中打不开,则要判断是否缺少Silverlight工作流控件的插件程序,如果不是则可以进行一下步骤检查,如果是以下原因则是:由于IIS版本问题,安装后可能出现不支持wcf服务的请求处理,需要手动添加处理程序;数据库客户端如果是64位,需要修改iis应用池启用32位。......
  • Classical Management: emphasized rationality and making organizations and worker
    Classicalapproach:Firststudiesofmanagement,whichemphasized:rationalitymakingorganizationsandworkersasefficientaspossibleMaxWeber’sBureaucracy(OrganationalMachine)wasanattempttoformulatetheBureaucracyanidealprototypefororg......
  • 基于vite的前端模板库create-xg
    一个类似于create-vite的快速生成模板,因为create-vite创建的项目模板只有最基础的东西,仍然需要安装第三方依赖如ui库等,还未达到开箱即用的程度。于是自己动手实现一个类似的模板库,包含vue/react、路由、ui库、axios、mock数据,可以在此基础上直接开发业务代码,避免重复的环境搭......
  • docker配置
    在ubuntu22.04.2版本配置 更新系统软件包:sudoaptupdate安装所需的依赖包,以允许APT使用HTTPS:sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-common添加Docker官方的GPG密钥:curl-fsSLhttps://download.docker.com/linux/ubun......
  • G2、人脸图像生成(DCGAN)
    ......
  • 基准测试工具 --- BenchmarkDotNet
    介绍今天介绍一个非常强大的基于.Net的基准测试工具BenchmarkDotNet。BenchmarkDotNet已经被14300多个项目采用,包括非常多的知名开源项目,例如dotnet/performance(.Net所有运行时的基准测试项目)dotnet/runtime(.Net运行时库),Roslyn(c#和VisualBasic编译器),Mono、ASP.NET......
  • vue3组合式 API_为 computed() 标注类型
    computed() 会自动从其计算函数的返回值上推导出类型<template><h3>{{doubleCount}}</h3></template><scriptsetuplang="ts">import{ref,computed}from"vue"constcount=ref<number>(100)//推导得到的类型:ComputedRef&l......
  • 《Language Model Cascades》论文学习
    一、Introduction语言模型(LM)已展现出令人印象深刻的小样本学习能力,很多人建议应该将LM视为一个基础通用推理计算器,这个基础通用推理计算器可以被用于例如:scratchpadschainofthoughtpromptinglearnedverifiersselection-inferencebootstrappingbeenappliedinfor......
  • 【渗透测试】Cobalt Strike制作钓鱼邮件渗透Windows
    目标在kali中使用CobaltStrike制作钓鱼邮件,对Windows进行渗透机器环境kali(服务端):192.168.175.129win11(攻击机):192.168.175.128win11(靶机):192.168.175.137步骤一、安装CobaltStrike将压缩包解压unrarx./CobaltStrike4_8_lusuo.rar若要解压到指定路径,先新建......