C#实现相似QQ的隐藏浮动窗口、消息闪动
功能简单介绍
当语音客服系统登录成功进入主界面时,本聊天工具将会自己主动隐藏在左下角位置,当鼠标移动到左下角时,自己主动弹出,当鼠标移开聊天窗口时,自己主动隐藏。假设想让聊天窗口固定在桌面。仅仅要拖动一下聊天窗口,让它不停留在边界位置就能够了。
隐藏和悬浮方式类型QQ。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem91eXVqaWUxMTI3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
1. 系统主界面
当点击最小化button时,
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem91eXVqaWUxMTI3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> 在电脑右下角会显示任务图标,点击任务图标,将会在左下角位置弹出。
主界面各部分介绍:
a) 消息列表:该区域的功能主要是显示消息记录。
b) 发送消息:输入要发送的消息进行发送,默认群聊。输入消息后,按回车键或者点击“发送”button,将进行消息发送。
c) 坐席人员:显示全部已登录客服系统的坐席人员,显示方式:名称(状态)
d) 通知:记录坐席上下线记录
实现浮动:
#region 停靠悬浮 internal AnchorStyles StopDock = AnchorStyles.None; private void StopRectTimer_Tick(object sender, EventArgs e)
{
//假设鼠标在窗口上。则依据停靠位置显示整个窗口
if (this.Bounds.Contains(Cursor.Position))
{
switch (this.StopDock)
{
case AnchorStyles.Top:
this.Location = new Point(this.Location.X, 0);
break;
case AnchorStyles.Bottom:
this.Location = new Point(this.Location.X, Screen.PrimaryScreen.Bounds.Height - this.Height);
break;
case AnchorStyles.Left:
this.Location = new Point(0, this.Location.Y);
break;
case AnchorStyles.Right:
this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - this.Width, this.Location.Y);
break;
}
}
else //假设鼠标离开窗口,则依据停靠位置隐藏窗口,但须留出部分窗口边缘以便鼠标选中窗口
{
switch (this.StopDock)
{
case AnchorStyles.Top:
this.Location = new Point(this.Location.X, (this.Height - 3) * (-1));
break;
case AnchorStyles.Bottom:
this.Location = new Point(this.Location.X, Screen.PrimaryScreen.Bounds.Height - 5);
break;
case AnchorStyles.Left:
this.Location = new Point((-1) * (this.Width - 3), this.Location.Y);
break;
case AnchorStyles.Right:
this.Location = new Point(Screen.PrimaryScreen.Bounds.Width - 2, this.Location.Y);
break;
}
}
} private void MainFrm_LocationChanged(object sender, EventArgs e)
{
if (this.Top <= 0)
{
this.StopDock = AnchorStyles.Top;
}
else if (this.Bottom >= Screen.PrimaryScreen.Bounds.Height)
{
this.StopDock = AnchorStyles.Bottom;
}
else if (this.Left <= 0)
{
this.StopDock = AnchorStyles.Left;
}
else if (this.Left >= Screen.PrimaryScreen.Bounds.Width - this.Width)
{
this.StopDock = AnchorStyles.Right;
}
else
{
this.StopDock = AnchorStyles.None;
}
} #endregion
有消息来时,不断闪动图标。加入一个定时器,不断切换该图标,监听,消息列表,假设有文字改变。则开启定时器。
int i = 0; //先设置一个全局变量 i ,用来控制图片索引,然后创建定时事件,双击定时控件就能够编辑
private Icon ico1 = new Icon("img/q1.ico");
private Icon ico2 = new Icon("img/q2.ico"); //两个图标 切换显示 以达到消息闪动的效果 //定时器 不断闪动图标
private void timer1_Tick(object sender, EventArgs e)
{
//假设i=0则让任务栏图标变为透明的图标而且退出
if (i < 1)
{
this.notifyIcon1.Icon = ico2;
i++;
return;
}
//假设i!=0,就让任务栏图标变为ico1,并将i置为0;
else
this.notifyIcon1.Icon = ico1;
i = 0;
} //有消息来时 闪动
private void ChatRoomMsg_TextChanged(object sender, EventArgs e)
{
this.timer1.Enabled = true;
} private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (this.timer1.Enabled)
{
this.timer1.Enabled = false;
}
if (e.Button == MouseButtons.Left && this.WindowState == FormWindowState.Minimized)
{
//推断是否已经最小化于托盘
if (WindowState == FormWindowState.Minimized)
{
this.StopRectTimer.Enabled = false; StopDock = AnchorStyles.None;
//还原窗口显示
WindowState = FormWindowState.Normal;
//激活窗口并给予它焦点
//this.Activate();
//任务栏区显示图标
this.ShowInTaskbar = false;
//托盘区图标隐藏
//notifyIcon1.Visible = true; //默认显示 左下角
this.Left = 0;
this.Top = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
}
}
}
C#实现相似QQ的隐藏浮动窗口、消息闪动的更多相关文章
- 7、菜单栏、工具栏、状态栏、浮动窗口、TextEdit
新建项目,基类选择QMainWindow,不勾选ui mainwindow.cpp代码: #include "mainwindow.h" #include <QMenu ...
- Jquery 类似新浪微博,鼠标移到头像,用浮动窗口显示用户信息,已做成一个jquery插件
请注意!!!!! 该插件demo PHP 的 demo下载 C#.NET的demo下载 需要如下图, 1.鼠标移动到头像DIV时,Ajax获取数据,并让浮动DIV显示出来. 2.鼠标可以移动到上面浮 ...
- Android 浮动窗口进阶——画中画,浮动视频(附Demo)
今天继续上一篇Android顶层窗口.浮动窗口的进阶应用.上一篇主要讲解了WindowManager服务和如何使用WindowManager编写一个顶层窗口.今天主要是讲讲如何在顶层窗口里面播放视频, ...
- Android 实现顶层窗口、浮动窗口(附Demo)
做过Window程序开发的朋友应该都知道,我们要把程序窗口置顶很简单,只要设置一些窗口属性即可.但是到了Android,你无法简单设置一个属性,就让Android的Activity置顶.因为只要有新的 ...
- 转载:隐藏bat窗口在后台运行(找了好久)
https://mp.weixin.qq.com/s?__biz=MzU4MjY1ODA3Nw==&mid=2247484277&idx=1&sn=8b5d98aab3827b ...
- 系统右键菜单添加剪贴板清空项(隐藏DOS窗口)
@color 0A @title 系统右键菜单添加剪贴板清空项(隐藏DOS窗口) by wjshan0808 @echo off echo 请输入右键菜单名称 set /p name= ::创建本机A ...
- WinForm------弹出MessageBox窗口的同时隐藏当前窗口
private void Btn_OK_Click(object sender, EventArgs e) { this.Hide(); //隐藏当前窗口 MessageBox.Show(" ...
- (转)JS浮动窗口(随浏览器滚动而滚动)
原文:http://hi.baidu.com/aiyayaztt/item/4201c55a6b729dced2e10c79 JS浮动窗口(随浏览器滚动而滚动) 往往用于一些联系方式,互动平台模块,随 ...
- C#隐式运行CMD命令(隐藏命令窗口)
原文 C#隐式运行CMD命令(隐藏命令窗口) 本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运 ...
随机推荐
- IOS中的动画——Core Animation
一.基础动画 CABasicAnimation //初始化方式 CABasicAnimation * cabase=[CABasicAnimation animation]; //通过keyPath设 ...
- maven编译报错 -source 1.7 中不支持 lambda 表达式
Maven项目编译失败: [ERROR] COMPILATION ERROR : [INFO] ---------------------------------------------------- ...
- web中的水晶报表 "出现通信错误。将停止打印"
被这个问题快折腾死,死活都找不到原因,找了一堆解答,无外乎这几种情况,但都不管用 在Page_Init中绑定数据.无效. activex控件的版本,我试过10.2.0.1146等多个版本的dll,10 ...
- idea 设置代码的颜色
- [Node.js] Stream all things!
Node.js come alone with many Stream API. Stream is useful when handling large trunck of data. For ex ...
- [HTML5] Avoiding CSS Conflicts via Shadow DOM CSS encapsulation
Shadow DOM is part of the web components specification. It allows us to ship self contained componen ...
- 【Nodejs】使用put方式向后端查询数据并在页面显示
前端代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Ty ...
- cpu访址能力和内存
这里有两个概念:cpu访址能力和提供的内存.举例来说,有个灯泡,可以照亮100立方米的空间,只有照亮的空间才可以工作.假如现在的空间只有50立方米,只要增加空间,可工作的空间就增加了.如果当前已经是1 ...
- Node FS 读取文件中文乱码解决
1:首先保证源文件编码方式为UTF-8 2:读取代码,设置编码方式rs.setEncoding('utf8') var fs = require('fs'); var rs = fs.createRe ...
- Web 前端攻防(2014版)-baidu ux前端研发部
http://fex.baidu.com/articles/page2/ Web 前端攻防(2014版) zjcqoo | 20 Jun 2014 禁止一切外链资源 外链会产生站外请求,因此可以被利用 ...