溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中怎么實(shí)現(xiàn)倒計(jì)時(shí)關(guān)閉提示框功能

發(fā)布時(shí)間:2021-08-07 14:52:22 來(lái)源:億速云 閱讀:128 作者:Leah 欄目:編程語(yǔ)言

C#中怎么實(shí)現(xiàn)倒計(jì)時(shí)關(guān)閉提示框功能,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

其核心方法在 timer(TimerCallBack,Object,int32,int32) TimerCallBack 是一個(gè)委托 ,代表要執(zhí)行的方法,其用途可以用在各個(gè)定時(shí)去調(diào)用方法的場(chǎng)景,而且可以設(shè)置窗體的FormBorderStyle的屬性為None,設(shè)置窗體邊框和標(biāo)題欄外觀不顯示.

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 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);  }}

調(diào)用時(shí)直接使用類名.show(text,captiom,timeout) 直接調(diào)用即可

下邊是當(dāng)時(shí)的項(xiàng)目使用場(chǎng)景的解決辦法

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;      }    }  }}

該窗體可以用于實(shí)時(shí)監(jiān)控某一個(gè)狀態(tài)時(shí) 而彈出的提示框 并根據(jù)狀態(tài)改變而隱藏

使用時(shí),new一個(gè)該errorForm

在該窗體有一個(gè)RichTextBox,用來(lái)顯示提示信息,使用SetMsg,設(shè)置要顯示的信息

需要彈出時(shí),實(shí)例調(diào)用Show()方法 實(shí)際就是講該窗體的visible屬性置為true,讓窗體顯示,并且調(diào)用Clear方法,清除提示信息

需要隱藏時(shí),實(shí)例調(diào)用HideForm()方法,將窗體visible屬性設(shè)置為false,調(diào)用clear方法,清除提示信息

關(guān)于C#中怎么實(shí)現(xiàn)倒計(jì)時(shí)關(guān)閉提示框功能問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI