网站建设资讯

NEWS

网站建设资讯

C#如何实现倒计时关闭提示框功能-创新互联

这篇文章主要介绍了C#如何实现倒计时关闭提示框功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

创新互联建站长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为施甸企业提供专业的成都做网站、成都网站建设,施甸网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

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

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

C#如何实现倒计时关闭提示框功能

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#是一个简单、通用、面向对象的编程语言,它由微软Microsoft开发,继承了C和C++强大功能,并且去掉了一些它们的复杂特性,C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程从而成为.NET开发的选语言,但它不适用于编写时间急迫或性能非常高的代码,因为C#缺乏性能极高的应用程序所需要的关键功能。

感谢你能够认真阅读完这篇文章,希望小编分享的“C#如何实现倒计时关闭提示框功能”这篇文章对大家有帮助,同时也希望大家多多支持创新互联成都网站设计公司,关注创新互联成都网站设计公司行业资讯频道,更多相关知识等着你来学习!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站设计器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:C#如何实现倒计时关闭提示框功能-创新互联
路径分享:http://cdweb.net/article/ceoejd.html