winform C#屏幕右下角弹出消息框并自动消失
①弹出信息框后慢慢下降消失
在主窗体中新增按钮重命名为btnShowAndDisappearMessages,在click事件中写如下代码:
private void btnShowAndDisappearMessages_Click(object sender, EventArgs e)
{
Messages ms = new Messages();//要弹出的消息框
Point p = new Point(Screen.PrimaryScreen.WorkingArea.Width - ms.Width, Screen.PrimaryScreen.WorkingArea.Height);
ms.PointToClient(p);
ms.Location = p;
ms.Show();
for (int i = 0; i < ms.Height; i++)
{
ms.Location = new Point(p.X, p.Y - i);
System.Threading.Thread.Sleep(10);
}
}
在Messages窗体中新增timer计时器,设定Interval为2000,并将Enable属性设置为true,当此弹出框load过2秒后timer1开始工作,在timer1事件中写如下代码:
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
for (int i = 0; i <= this.Height; i++)
{
Point p = new Point(this.Location.X, this.Location.Y + i);//弹出框向下移动消失
this.PointToScreen(p);//即时转换成屏幕坐标
this.Location = p;// new Point(this.Location.X, this.Location.Y + 1);
System.Threading.Thread.Sleep(10);//线程睡眠时间调的越小向下消失的速度越快。
}
this.Close();
this.Dispose();
}
②弹出信息框后渐渐变淡消失,鼠标移上去后再显示
在主窗体新增按钮并重命名为btnMouseShowMessages写如下代码:
private void btnMouseShowMessages_Click(object sender, EventArgs e)
{
MouseShowMessages mm = new MouseShowMessages();//要弹出的消息框
Point p = new Point(Screen.PrimaryScreen.WorkingArea.Width - mm.Width, Screen.PrimaryScreen.WorkingArea.Height);
mm.PointToClient(p);
mm.Location = p;
mm.Show();
for (int i = 0; i < mm.Height; i++)
{
mm.Location = new Point(p.X, p.Y - i);
System.Threading.Thread.Sleep(10);
}
}
在MouseShowMessages窗体上新增两个timer控件。
其中timer1的事件代码如下:(控制信息框消失)
private void timer1_Tick(object sender, EventArgs e)
{
timer2.Enabled = false;//停止timer2计时器,
if (this.Opacity > 0 && this.Opacity <= 1)//开始执行弹出窗渐渐透明
{
this.Opacity = this.Opacity - 0.1;//透明频度
}
if (System.Windows.Forms.Control.MousePosition.X >= this.Location.X && System.Windows.Forms.Control.MousePosition.Y >= this.Location.Y)//每次都判断鼠标是否是在弹出窗上,使用鼠标在屏幕上的坐标跟弹出窗体的屏幕坐标做比较。
{
timer2.Enabled = true;//如果鼠标在弹出窗上的时候,timer2开始工作
timer1.Enabled = false;//timer1停止工作。
}
if (this.Opacity == 0)//当透明度==0的时候,关闭弹出窗以释放资源。
{
this.Close();
this.Dispose();
}
}
timer2的事件代码如下:(控制检测鼠标位置)
/// <summary>
/// 判断鼠标是不是还在弹出框上,如果不是则timer1又可以开始工作了
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer2_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;//timer1停止工作
this.Opacity = 1;//弹出窗透明度设置为1,完全不透明
if (System.Windows.Forms.Control.MousePosition.X < this.Location.X && System.Windows.Forms.Control.MousePosition.Y < this.Location.Y)//如下
{
timer1.Enabled = true;
timer2.Enabled = false;
}
}
处理速度可以根据timer控件的Interval属性设置。
winform C#屏幕右下角弹出消息框并自动消失的更多相关文章
- C#右下角弹出消息框
打开QQ的时候,QQ新闻弹出窗体在屏幕的右下角就会慢慢升起一个小窗口,占用的地方不大,可以起到提示的作用.下面就让我们来看看,怎样用系统API来轻松实现这个功能.API原型函数:bool Animat ...
- [Phonegap+Sencha Touch] 移动开发19 某些安卓手机上弹出消息框 点击后不消失的解决的方法
Ext.Msg.alert等弹出框在某些安卓手机上,点击确定后不消失. 原因是: 消息框点击确定后有一段css3 transform动画,动画完毕后才会隐藏(display:none). 有些奇葩手机 ...
- .net 弹出消息框后,页面样式变乱
点击按钮,执行提交操作,弹出消息框后,页面的样式变乱,解决方法: 首先,确定使用的css样式正确,页面中的宽高值保持规范统一: 然后,弹出框避免使用Response.Write(),如下所示 Resp ...
- jquery easyui 弹出消息框 (转载) jQuery EasyUI API 中文文档 - 消息框(Messager) http://www.cnblogs.com/hantianwei/archive/2012/03/19/2407113.html
<html> <head> <!-- 导入easyui插件的js和css样式; --> <link rel="stylesheet" ty ...
- jquery easyui 弹出消息框
<html> <head> <!-- 导入easyui插件的js和css样式; --> <link rel="stylesheet" ty ...
- 关于winform窗体关闭时弹出提示框,选择否时窗体也关闭的问题
在窗体中有FormClosing这个事件,这个事件是在窗体关闭时候运行的.如果要取消某个事件的操作,那么就在该事件中写上e.Cancel=true就能取消该事件,也就是不执行该事件.所以,你要在窗体关 ...
- AloneJs.msgbox() —— 弹出消息框
一.引用 <link href="https://cdn.suziyun.com/alonejs.min.css" rel="stylesheet" /& ...
- layer弹出框确定前验证:弹出消息框(弹出两个layer)
作者QQ:1095737364 QQ群:123300273 欢迎加入! layer 弹出框中经常遇到要弹出表单进行修改数据, 因此在弹出框中的表单需要验证数据, 就需要在弹出一个layer, 默认的设 ...
- java中利用JOptionPane类弹出消息框的部分例子
转: http://www.cnblogs.com/wangxiuheng/p/4449917.html http://blog.csdn.net/penjie0418/article/details ...
随机推荐
- Yii快速入门教程
Ⅰ.基本概念一.入口文件入口文件内容:一般格式如下:<?php$yii=dirname(__FILE__).'/../../framework/yii.php';//Yii框架位置$config ...
- 8-7-Exercise
链接:第二次小练 这次是我们这组出的题目~我出了一道......B-Prison rearrangement,感觉有点复杂~不过其实题目想通了还是很简单的...... @荆红浅醉出的是A.C.D,@从 ...
- Oracle的SCN与检查点机制
Oracle的SCN与检查点机制 SCN在Oracle的文档上以多种形式出现,一种是System Change Number,另一种是System Commit Number,在大多数情况下,Syst ...
- ReactiveCocoa框架学习1
写block直接使用inline block的声明类型 在ARC中使用strong,如果不使用strong,则会被销毁 在非ARC中使用copy block在开发中的使用场景 把block保存到对象中 ...
- JSBinding+Bridge:逻辑代码中操作二进制数据
以这2个函数为例 class File { public static byte[] ReadAllBytes(string path); public static void WriteAllByt ...
- macos 配置 golang 开发环境
初次接触golang这门编程语言,一下子就喜欢上了,语法简洁优雅,对于以前有c/c++编程经验的人来说会更加有亲切感. 仅仅学习了一天就能应用beego框架和mogodb数据库开发一个rest api ...
- SharePoint PerformancePoint Service-PowerShell
1. 配置托管服务账户 Set-SPPerformancePointSecureDataValues -ServiceApplication "PerformancePoint Servic ...
- CentOS Nginx+jdk+tomcat 环境搭建
一.jdk安装 jdk下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloa ...
- 直接通过浏览器打开Android App 应用
点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式例如以下: <a href="[scheme]://[host]/[path]?[query]&quo ...
- android开发布局优化之ViewStub
使用ViewStub可以延迟加载一个布局文件,提高显示速率.刚开始接触到,记录下来. 关于viewstub的使用,我们可以在不同的布局中使用,比如可以根据设备的大小动态决定显示哪个界面. viewst ...