array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Winform中实现右下角Popuo弹窗提醒效果(附代码下载) - 爱码网

效果

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

 

 

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

新建一个form窗体,并拖拽一个按钮,作为出现弹窗的触发按钮

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

 

 

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

然后再新建一个页面作为弹窗时的显示页面,并添加一个Timer

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

 

 

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

为了美观,设置其背景图片与关闭按钮照片

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

 

 

Winform中实现右下角Popuo弹窗提醒效果(附代码下载)

然后进入其代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Popup.Controls
{
    partial class Frm_Popup : System.Windows.Forms.Form
    {

        #region 变量
        private InformStyle InfoStyle = InformStyle.Vanish;//定义变量为隐藏
        private System.Drawing.Rectangle Rect;//定义一个存储矩形框的数组
        private bool isMouseMove = false;//是否在窗体中移动
        static private Frm_Popup F_Popup = new Frm_Popup();//实例化当前窗体
        #endregion

        #region 内置属性
        /// <summary>
        /// 定义一个任务通知器的枚举值
        /// </summary>//InformStyle
        protected enum InformStyle
        {
            /// <summary>
            /// 隐藏
            /// </summary>
            Vanish = 0,
            /// <summary>
            /// 显视
            /// </summary>
            Display = 1,
            /// <summary>
            /// 显视中
            /// </summary>
            Displaying = 2,
            /// <summary>
            /// 隐藏中
            /// </summary>
            Vanishing = 3
        }        
        
        /// <summary>
        /// 获取或设置当前的操作状态
        /// </summary>
        protected InformStyle InfoState
        {
            get { return this.InfoStyle; }
            set { this.InfoStyle = value; }
        }
        #endregion

        public Frm_Popup()
  {
   this.InitializeComponent();
   this.timer1.Stop();//停止计时器
   //初始化工作区大小
   System.Drawing.Rectangle rect = System.Windows.Forms.Screen.GetWorkingArea(this);
   this.Rect = new System.Drawing.Rectangle( rect.Right - this.Width - 1, rect.Bottom - this.Height - 1, this.Width, this.Height );
  }

        #region 返回当前窗体的实例化
        /// <summary>
        /// 返回此对象的实例
        /// </summary>
        /// <returns></returns>
        static public Frm_Popup Instance()
        {
            return F_Popup;
        }
        #endregion

        #region 声明WinAPI
        /// <summary>
        /// 显示窗体
        /// </summary>
        /// <param name="hWnd"></param>
        /// <param name="nCmdShow"></param>
        /// <returns></returns>
        [DllImport("user32.dll")]
        private static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);
        #endregion

        #region 方法
        /// <summary>
        /// 显示窗体
        /// </summary>
        public void Show()
        {
            switch (this.InfoState)
            {
                case InformStyle.Vanish://窗体隐藏
                    this.InfoState = InformStyle.Displaying;//设置窗体的操作状态为显示中
                    this.SetBounds(Rect.X, Rect.Y + Rect.Height, Rect.Width, 0);//显示Popup窗体,并放置到屏幕的底部
                    ShowWindow(this.Handle, 4);//显示窗体
                    this.timer1.Interval = 100;//设置时间间隔为100
                    this.timer1.Start();//启动计时器
                    break;
                case InformStyle.Display://窗体显示
                    this.timer1.Stop();//停止计时器
                    this.timer1.Interval = 5000;//设置时间间隔为5000
                    this.timer1.Start();//启动记时器
                    break;
            }
        }
        #endregion

        #region 事件
        private void timer1_Tick(object sender, System.EventArgs e)
        {
            switch (this.InfoState)
            {
                case InformStyle.Display://显示当前窗体
                    this.timer1.Stop();//停止计时器
                    this.timer1.Interval = 100;//设置时间间隔为100
                    if (!(this.isMouseMove))//如果鼠标不在窗体中移动
                        this.InfoState = InformStyle.Vanishing;//设置当前窗体的操作状态为隐藏中
                    this.timer1.Start();//启动计时器
                    break;
                case InformStyle.Displaying://当前窗体显示中
                    if (this.Height <= this.Rect.Height - 12)//当窗体没有完全显示时
                        this.SetBounds(Rect.X, this.Top - 12, Rect.Width, this.Height + 12);//使窗体不断上移
                    else
                    {
                        this.timer1.Stop();//停止计时器
                        this.SetBounds(Rect.X, Rect.Y, Rect.Width, Rect.Height);//设置当前窗体的边界
                        this.InfoState = InformStyle.Display;//设置当前窗体的操作状态为显示
                        this.timer1.Interval = 5000;//设置时间间隔为5000
                        this.timer1.Start();//启动计时器
                    }
                    break;
                case InformStyle.Vanishing://隐藏当前窗体
                    if (this.isMouseMove)//如果鼠标在窗体中移动
                        this.InfoState = InformStyle.Displaying;//设置窗体的操作状态为显示
                    else
                    {
                        if (this.Top <= this.Rect.Bottom - 12)//如果窗体没有完全隐藏
                            this.SetBounds(Rect.X, this.Top + 12, Rect.Width, this.Height - 12);//使窗体不断下移
                        else
                        {
                            this.Hide();//隐藏当前窗体
                            this.InfoState = InformStyle.Vanish;//设置窗体的操作状态为隐藏
                        }
                    }
                    break;
            }
        }

        private void Frm_Popup_MouseMove(object sender, MouseEventArgs e)
        {
            this.isMouseMove = true;//当鼠标移入时,设为true
        }

        private void Frm_Popup_MouseLeave(object sender, EventArgs e)
        {
            this.isMouseMove = false;//当鼠标移出时,设为false
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            if (this.InfoState != InformStyle.Vanish)//如果窗体的状态不是隐藏
            {
                this.timer1.Stop();//停止计时器
                this.InfoState = InformStyle.Vanish;//设置窗体的操作状态为隐藏
                base.Hide();//隐藏当前窗体
            }
        }

        private void pictureBox1_MouseEnter(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
            pictureBox1.Image = Image.FromFile("Close1.bmp");
        }

        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.Image = null;
            pictureBox1.Image = Image.FromFile("Close2.bmp");
        }
        #endregion
    }
}

 

代码下载

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/12240463

相关文章: