资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C#中怎么实现倒计时关闭提示框功能-创新互联

C#中怎么实现倒计时关闭提示框功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

十年的精河网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整精河建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“精河网站设计”,“精河网站推广”以来,每个客户项目都认真落实执行。

其核心方法在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 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);  }}

调用时直接使用类名.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(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方法,清除提示信息

关于C#中怎么实现倒计时关闭提示框功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


标题名称:C#中怎么实现倒计时关闭提示框功能-创新互联
转载来源:http://www.cdkjz.cn/article/dsijos.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220