C#实现右下角弹窗

http://wenku.baidu.com/view/c1ad1227482fb4daa58d4bfe.html
  /// <summary>
    /// 枚举,描述消息窗口加载的形式
    /// </summary>
    public enum LoadMode
    {
        /// <summary>
        /// 警告
        /// </summary>
        Warning,

        /// <summary>
        /// 错误
        /// </summary>
        Error,

        /// <summary>
        /// 提示
        /// </summary>
        Prompt
    }

    /// <summary>
    /// 消息提示窗口
    /// </summary>
    public partial class FormMessageBox : Form
    {
        /// <summary>
        /// 构造方法
        /// </summary>
        public FormMessageBox()
        {
            InitializeComponent();
        }

        #region ***********************字 段***********************

        /// <summary>
        /// 窗体加载模式
        /// </summary>
        private static LoadMode FormMode = LoadMode.Prompt;

        /// <summary>
        /// 显示的消息正文
        /// </summary>
        private static string ShowMessage = null;

        /// <summary>
        /// 关闭窗口的定时器
        /// </summary>
        private Timer Timer_Close = new Timer();

        [DllImportAttribute("user32.dll")]
        private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);   // 该函数可以实现窗体的动画效果

        public const Int32 AW_HOR_POSITIVE = 0x00000001;   // 自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略 
        public const Int32 AW_HOR_NEGATIVE = 0x00000002;   // 自右向左显示窗口。当使用了 AW_CENTER 标志时该标志被忽略

        public const Int32 AW_VER_POSITIVE = 0x00000004;   // 自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
        public const Int32 AW_VER_NEGATIVE = 0x00000008;   // 自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略

        public const Int32 AW_CENTER = 0x00000010;         // 若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展
        public const Int32 AW_HIDE = 0x00010000;           // 隐藏窗口,缺省则显示窗口
        public const Int32 AW_ACTIVATE = 0x00020000;       // 激活窗口。在使用了AW_HIDE标志后不要使用这个标志
        public const Int32 AW_SLIDE = 0x00040000;          // 使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略
        public const Int32 AW_BLEND = 0x00080000;          // 使用淡入效果。只有当hWnd为顶层窗口的时候才可以使用此标志

        #endregion*************************************************

        #region ***********************方 法***********************

        /// <summary>
        /// 构造方法
        /// </summary>
        /// <param name="loadMode">加载模式</param>
        /// <param name="message">消息正文</param>

        public static void Show(LoadMode loadMode, string message)
        {
            FormMode = loadMode;
            ShowMessage = message;

            FormMessageBox box = new FormMessageBox();
            box.Show();
        }

        #endregion*************************************************

        #region ***********************事 件***********************

        /// <summary>
        /// 窗体加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FormMessageBox_Load(object sender, EventArgs e)
        {
            this.lblTitle.Text = "提示";
            if (FormMode == LoadMode.Error)
            {
                this.lblTitle.Text = "错误";
                this.plShow.BackgroundImage = global::dataSource.Properties.Resources.error;    // 更换背景
            }
            else if (FormMode == LoadMode.Warning)
            {
                this.lblTitle.Text = "警告";
                this.plShow.BackgroundImage = global::dataSource.Properties.Resources.warning;  // 更换背景
            }
            else
            {
                this.plShow.BackgroundImage = global::dataSource.Properties.Resources.Prompt;   // 更换背景
            }

            this.lblMessage.Text = ShowMessage;

            int width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
            int height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
            int top = height - 35 - this.Height;
            int left = width - this.Width - 5;
            this.Top = top;
            this.Left = left;
            this.TopMost = true;

            AnimateWindow(this.Handle, 500, AW_SLIDE + AW_VER_NEGATIVE);//开始窗体动画

            this.ShowInTaskbar = false;

            Timer_Close.Interval = 4000;
            Timer_Close.Tick += new EventHandler(Timer_Close_Tick);
            Timer_Close.Start();
        }

        /// <summary>
        /// 关闭窗口的定时器响应事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Timer_Close_Tick(object sender, EventArgs e)
        {
            Timer_Close.Stop();

            this.Close();
        }

        /// <summary>
        /// 窗口已经关闭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FormMessageBox_FormClosed(object sender, FormClosedEventArgs e)
        {
            AnimateWindow(this.Handle, 500, AW_SLIDE + AW_VER_POSITIVE + AW_HIDE);

            Timer_Close.Stop();
            Timer_Close.Dispose();
        }

        /// <summary>
        /// 鼠标移动在消息框上
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void plShow_MouseMove(object sender, MouseEventArgs e)
        {
            this.Timer_Close.Stop();
        }

        /// <summary>
        /// 鼠标移动离开消息框上
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void plShow_MouseLeave(object sender, EventArgs e)
        {
            this.Timer_Close.Start();
        }
时间: 2024-08-29 12:39:35

C#实现右下角弹窗的相关文章

[C++] 自动关闭右下角弹窗

最近腾讯.迅雷等各种客户端,都越发喜欢在屏幕的右下角弹框了. 有骨气的人当然可以把这些软件卸载了事,但是这些客户端在某些情况下却又还是有用的.怎么办呢? 作为码农,自己实现一个自动关闭右下角弹窗的程序吧.这个程序一定要够小巧够简单,而且还要是开源的. 参见:https://github.com/wsq003/adclose 程序启动后会定时检测,可以自动关闭大部分的右下角弹框. 可执行程序只有88KB,放到系统启动项里也压力不大. 如果你不熟悉C++而且碰巧信任我的话,可以发邮件给 wsq003

[C++] 自己主动关闭右下角弹窗

近期腾讯.迅雷等各种client,都越发喜欢在屏幕的右下角弹框了. 有骨气的人当然能够把这些软件卸载了事,可是这些client在某些情况下却又还是实用的.怎么办呢? 作为码农,自己实现一个自己主动关闭右下角弹窗的程序吧. 这个程序一定要够小巧够简单,并且还要是开源的. 參见:https://github.com/wsq003/adclose 程序启动后会定时检測,能够自己主动关闭大部分的右下角弹框. 可运行程序仅仅有88KB,放到系统启动项里也压力不大. 假设你不熟悉C++并且碰巧信任我的话,能

C# winform 右下角弹窗

[DllImport("user32")] private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); //下面是可用的常量,根据不同的动画效果声明自己需要的 private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用.使用AW_CENTER标志时忽略该标志 private const int AW_H

c# 右下角弹窗提示

网上方法总结 第一种:AnimateWindow窗口动画 优点:淡入效果好 缺点:窗口完全出现后才开始绘制上面的控件,效果不好. /// <summary> /// 窗体动画函数 注意:要引用System.Runtime.InteropServices; /// </summary> /// <param name="hwnd">指定产生动画的窗口的句柄</param> /// <param name="dwTime&qu

qt之自定义提示框(不规则提示框,右下角弹窗)

http://blog.sina.com.cn/s/blog_a6fb6cc90101e4r8.html http://blog.sina.com.cn/s/blog_a6fb6cc90101dtav.html

JFrame 桌面右下角弹窗

直接上代码 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEven

Javascript知识汇总------面向对象手写弹窗插件

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

网站开发综合技术 第二部分 CSS样式表

第2部分 CSS样式表 CSS(Cascading Style Sheets,层叠样式表),作用是美化HTML网页. /*注释*/    注释语法 2.1.样式表的基本概念 2.1.1.样式表分类 1.内联样式表 和html联合显示,控制精确,但是可重用性差,冗余多. 例:<p style="font-size:14px;">内联样式表</p> 2.内嵌样式表 作为一个独立区域内嵌在网页里,必须写在head标签里边. <style type= "

Excel服务器待办事宜提醒客户端程序 [2014.03.19 日更新]

软件可以免费使用,作者仅保留一个版权声明于待办事宜提醒的状态栏处. 适用版本:Excel服务器9.2版及以上版本均支持. 欢迎大家提意见!联系QQ:303629685[Excel服务器待办事宜提醒客户端程序 20140113更新]        1.修复查询语句的小错误.        2.服务器端设置后,自动带出已设置的服务器端除密码外的相关信息.        3.客户端提醒设置后,自动带出已设置的客户端除密码外的相关信息.[Excel服务器待办事宜提醒客户端程序 20140109更新]