.net winForm 实现类似qq 弹出新闻
.net winForm 实现类似qq 弹出新闻
一、背景:
echong 之前一直用 公司大牛c语言写的一个弹出托管,前几天写东西的时候发现com调用不是那么好使。而手头上写的这个东西又是.net 环境下C#实现的。调用的时候有些背景图片logo不好调用,索性直接用.net写一个。东西很简单,写出来只是做个记录整理。
二、相关问题的提出和解决:
1、展现形式
1)最容易想到的自然是窗体的形式,考虑的窗的美观。
2)窗体原来的边框样式FormBorderStyle = none
3)然后用个Panel 填满整个窗体,name = Panel1 Panel BorderStye=FixedSingle
4) 在Panel1 的上方设置一个同宽的Panel2 来划分头部
5)在Panel2 左边放置个lable1 右边放置个 label2 方便做为标题字样 和 关闭(还可以加入logo等)
6)效果:

2、弹出的定位问题
在1 后咱们有了一个能做完弹出提示的窗体,那么如何定位到右下角。最容易想到就是根据电脑的分辨率然后直接x坐标y坐标定位到右下角。但是这样做不同电脑的分辨率不同的情况下就不能达到目的。如果我们能取得当前显示设备的大小。那么只要定位到 显示器的 宽 和 高 。可以得出 定位的左边 X1= 总宽宽-弹出窗体的宽 Y1=总高-弹出窗体高。正好C# 给我们提供了 Screen 类 这个类很容易取得显示设备的高宽代码
Rectangle r = Screen.GetWorkingArea(this);
this.Location = new Point(r.Right - this.Width, r.Bottom - this.Height);
以上两行代码实现了窗体定位到了右下角
3、支持鼠标位置的移动
通过 1,2基本上实现了我们想要的右下角弹出提示窗体的目的。但是发现窗体不能拖动 。我们想实现 这对 panel2 鼠标有拖动整个窗体的功效。 解决这个问题需要调用window内置API,user32.dll 提供了Windows用户界面相关应用程序接口。

[DllImport("user32.dll")]
//方法扑捉
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
void Panel2MouseDown(object sender, MouseEventArgs e)
{
//扑捉事件
ReleaseCapture();
//发送消息给window Api 来实现
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);//
}

三、总体效果:
当然我们可以做成通用的类,在类实例化对象的时候把标题 、图标、内容等等信息可以传入进去。

.net winForm 实现类似qq 弹出新闻的更多相关文章
- C# 仿制QQ弹出新闻消息框
打开QQ的时候,QQ新闻弹出窗体在屏幕的右下角就会慢慢升起一个小窗口,占用的地方不大,可以起到提示的作用.下面就让我们来看看,怎样用系统API来轻松实现这个功能. API原型函数: bool Anim ...
- WinForm实现类似QQ停靠,显示隐藏过程添加特效效果
原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右 ...
- C# Winform在win10里弹出无焦点的窗口
原文:C# Winform在win10里弹出无焦点的窗口 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangmy1988/article/det ...
- 纯手画WinForm的Alert提示弹出框
纯手画WinForm的Alert弹框 一.窗体设置 设置以下属性: 属性名 属性值 说明 AutoScaleMode None 确定屏幕分辨率或字体更改时窗体如何缩放 BackColor 103, 1 ...
- winform C#屏幕右下角弹出消息框并自动消失
①弹出信息框后慢慢下降消失 在主窗体中新增按钮重命名为btnShowAndDisappearMessages,在click事件中写如下代码: private void btnShowAndDisapp ...
- 关于winform窗体关闭时弹出提示框,选择否时窗体也关闭的问题
在窗体中有FormClosing这个事件,这个事件是在窗体关闭时候运行的.如果要取消某个事件的操作,那么就在该事件中写上e.Cancel=true就能取消该事件,也就是不执行该事件.所以,你要在窗体关 ...
- Winform form窗体已弹出框的形式出现并回传值
From2(弹出框)回传数据到From1 Form1(数据接收form): public string Sstr; private void button1_Click(object sender, ...
- win7 C# winForm编程 savefiledialog 不能弹出保存窗体
public void ResMsg() { while (isRecMsg) { //准备一个数组 准备接收 ...
- 网页QQ弹出
<script language="javascript"> function cdyht(){ window.location.href='tencent://Mes ...
随机推荐
- 如何让格斗游戏的横版过关(2) Cocos2d-x 2.0.4
在第一章<如何使横版格戏>基础上.添加角色运动.碰撞.敌人.AI和音乐音效,原文<How To Make A Side-Scrolling Beat 'Em Up Game Like ...
- DHot.exe 热点新闻
别人的电脑上的今日插件U菜,打开几个PPT文件,和一个视频文件(默认的音频和视频打开百度),结果突然弹出一个热点广告信息表,形式与风格QQ非常相似,例如下面的附图: 托盘图标: 经过搜索.得到例如以下 ...
- redis权限认证(设置密码)的方法
redis可以通过设置密码来增强安全强度.除了设置密码,我们还可以通过修改redis的默认端口.对端口做防火墙等.那么如何开启redis的密码功能呢?以下就是详细的步骤方法: 打开redis.conf ...
- linux_awk_内部正则过滤
awk -F'\t' '{if($3 !~ /^<p><img/){print $0}}' latex500.db|wc -l
- linux_曝出重大bash安全漏洞及修复方法
日前Linux官方内置Bash中新发现一个非常严重安全漏洞(漏洞参考https://access.redhat.com/security/cve/CVE-2014-6271 ),黑客可以利用该Bas ...
- iOS:Block写递归
首先来一个 oc 的递归: - (int)sum:(int)num { ) { return num; } ]; } 写递归算法只需要记住两点即可: 1. 有一个明确的出口 2. 不满足条件出口时,自 ...
- Swift的笔记和参考
原文:Swift的笔记和参考 好久没来了,趁着新语言Swift发布,继续钻研中! Create Class 创建类 (多态效果) // Create Class 创建类 class MyClass { ...
- eclipse打不开data目录解决的方法
1.首先手机必须详细root权限.没有的话,先去root. 2.root过后若还是不能打开,下载一个R.E管理器,然后将须要打开的目录设置为可读.可写.可运行. 附图:
- C语言库函数大全及应用实例三
原文:C语言库函数大全及应用实例三 [编程资料]C语言库函数大全及应用实例三 函数名: ecvt 功 能: 把一个浮点数转换为字符串 用 法: char ecvt(double value, int ...
- 调试经验--硬盘U菜
调试经验--硬盘U菜 随着嵌入式设备功能的开发,随着对存储设备的需求:需要存储大量数据信息.需要在转储数据,U盘升级功能等. 在使用存储设备的过程中,我们遇到一些问题,也总结了些经验: 1.几 ...