速贝网站友情链接怎么做,上海搜索优化推广哪家强,填写网站备案信息,厦门网站建设多少钱前言 消息通知在应用程序中#xff0c;是一种非常有用的功能#xff0c;实现对一些重要信息、提醒或警告及时向用户展示。我们在使用软件时#xff0c;通常会收到一种从桌面右下角弹出的#xff08;提示信息或广告#xff09;信息框。本文将介绍使用 C# 实现此种方式的信息…前言 消息通知在应用程序中是一种非常有用的功能实现对一些重要信息、提醒或警告及时向用户展示。我们在使用软件时通常会收到一种从桌面右下角弹出的提示信息或广告信息框。本文将介绍使用 C# 实现此种方式的信息通知窗口。 实现
1、使用 API 的 AnimateWindow 函数 定义 AnimateWindows
using System;using System.Runtime.InteropServices;
namespace Fountain.WinForm.MessageBoxDemo{ public class Win32 { /// summary /// 自左向右显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记 /// /summary public const int AW_HOR_POSITIVE 0x0001; /// summary /// 自右向左显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记 /// /summary public const int AW_HOR_NEGATIVE 0x0002; /// summary /// 自顶向下显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记 /// /summary public const int AW_VER_POSITIVE 0x0004; /// summary /// 自下向上显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记该标记 /// /summary public const int AW_VER_NEGATIVE 0x0008; /// summary /// 若应用了AW_HIDE标记,则使窗口向内重叠;不然向外扩大 /// /summary public const int AW_CENTER 0x0010; /// summary /// 隐蔽窗口 /// /summary public const int AW_HIDE 0x10000; /// summary /// 激活窗口,在应用了AW_HIDE标记后不要应用这个标记 /// /summary public const int AW_ACTIVE 0x20000; /// summary /// 滑动类型动画结果,默认为迁移转变动画类型,当应用AW_CENTER标记时,这个标记就被忽视 /// /summary public const int AW_SLIDE 0x40000; /// summary /// 淡入淡出结果 /// /summary public const int AW_BLEND 0x80000; /// summary /// 窗体动画函数 /// /summary /// param namehwnd/param /// param namedwTime/param /// param namedwFlags/param /// returns/returns [DllImport(user32)] public static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); }}
定义显示消息窗体
using System;using System.Drawing;using System.Windows.Forms;
namespace Fountain.WinForm.MessageBoxDemo{ public partial class FormMessageBox : Form { /// summary /// 关闭窗口的定时器 /// /summary private Timer formCloseTime new Timer(); /// summary /// 构造方法 /// /summary public FormMessageBox() { InitializeComponent(); } /// summary /// 窗体加载 /// /summary /// param namesender/param /// param namee/param private void FormMessageBox_Load(object sender, EventArgs e) { // 手动设置起始位置 this.StartPosition FormStartPosition.Manual; // 计算屏幕尺寸并将窗体放置在右下角 Rectangle screenRectangle Screen.PrimaryScreen.WorkingArea; int x screenRectangle.Width - this.Width; int y screenRectangle.Height - this.Height; this.Location new Point(x, y); this.TopMost true;Win32.AnimateWindow(this.Handle, 1000, Win32.AW_SLIDE Win32.AW_VER_NEGATIVE);this.ShowInTaskbar false;formCloseTime.Interval 5000; formCloseTime.Tick new EventHandler(formCloseTime_Tick); formCloseTime.Start(); } /// summary /// 关闭窗口的定时器响应事件 /// /summary /// param namesender/param /// param namee/param private void formCloseTime_Tick(object sender, EventArgs e) { formCloseTime.Stop(); this.Close(); } /// summary /// /// /summary /// param namesender/param /// param namee/param private void FormMessageBox_FormClosed(object sender, FormClosedEventArgs e) { formCloseTime.Stop(); formCloseTime.Dispose(); Win32.AnimateWindow(this.Handle, 1000, Win32.AW_SLIDE Win32.AW_VER_POSITIVE Win32.AW_HIDE); } }}
主界面调用
FormMessageBox formMessageBox new FormMessageBox();formMessageBox.Show(); 2、控制窗体显示 定义显示消息窗体
using System;using System.Drawing;using System.Threading;using System.Windows.Forms;
namespace Fountain.WinForm.MessageBoxDemo{ public partial class FormNotifyBox : Form { /// summary /// 关闭窗口的定时器 /// /summary private System.Windows.Forms.Timer formCloseTime new System.Windows.Forms.Timer(); /// summary /// /// /summary private Point formPoint; /// summary /// /// /summary public FormNotifyBox() { InitializeComponent(); this.formPoint new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height); // 设置窗体在屏幕右下角显示 this.Location formPoint; } /// summary /// /// /summary /// param namesender/param /// param namee/param private void FormNotifyBox_Load(object sender, EventArgs e) { try { formCloseTime.Interval 5000; formCloseTime.Tick new EventHandler(formCloseTime_Tick); formCloseTime.Start(); this.TopMost false; this.BringToFront(); this.TopMost true; this.PointToClient(this.formPoint); this.Location this.formPoint; this.Show(); for (int i 0; i this.Height; i) { this.Location new Point(formPoint.X, formPoint.Y - i); // 消息框弹出速度数值越大越慢 Thread.Sleep(1); } } catch (Exception exception) { } } /// summary /// 关闭窗口的定时器响应事件 /// /summary /// param namesender/param /// param namee/param private void formCloseTime_Tick(object sender, EventArgs e) { formCloseTime.Enabled false; for (int i 0; i this.Height; i) { //弹出框向下移动消失 Point point new Point(this.Location.X, this.Location.Y i); this.PointToScreen(point); //即时转换成屏幕坐标 this.Location point; //下降速度调节数字越小消失的速度越快建议不大于10 Thread.Sleep(8); } this.Close(); this.Dispose(); } }}
主界面调用
FormNotifyBox notifyForm new FormNotifyBox();notifyForm.Show();