.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 ...
随机推荐
- 微信JS-SDK使用权限签名算法的服务端实现(.net版本)
原文:微信JS-SDK使用权限签名算法的服务端实现(.net版本) 一.概要 微信此次开放JS接口,开放了一大批api权限,即使在未认证的订阅号也可以使用图像接口,音频接口,智能接口,地理位置,界面操 ...
- OBIEE SampleAppv406 自己主动启动配置
SampleApp 一个简短的引论: SampleApp这是一个一站式服务,几乎证明OBIEE不管顶的特征可想而知. 它安装了大量的应用(数据库,OBIEE,的Endeca.TimesTen的.Ess ...
- linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
章节目录 mysql redis linux下部署mysql和redis网上的教程很多,这里记录一下我部署.配置的过程中遇到的一些问题和解决办法. mysql ①安装完成后启动的时候报错 Starti ...
- LeetCodeOJ. Maximum Depth of Binary Tree
见问题: https://oj.leetcode.com/problems/maximum-depth-of-binary-tree/ 主题概述 Given a binary tree, find i ...
- JavaScript模块化编程之require.js与sea.js
为什么要模块化:当今,网站以不再是一个简单的页面,JavaScript也不再是做一些简单的脚本验证,随着WEB.20时代到来,前端工程师面临的必将是越来越庞大的JavaScript代码,越来越复杂的内 ...
- linux_ubuntu12.04 卸载和安装mysql、远程访问、not allowed
一: 安装mysql 卸载mysql 第一步 sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-se ...
- 用css2属性clip实现网页进度条
前言 看了网上一些关于网页进度条样式的资料,有很多方式实现,针对其展现形式,有用图片的,有用css2属性clip,有用flash的,本人就学会了一种,下面就简单来介绍一下. css2的属性clip 如 ...
- MySQL编程(0) - Mysql中文乱码问题解决方案
MySQL 5.6 for Windows 解压缩版配置安装: http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html MySQL ...
- MVC生成CheckBoxList并对其验证
原文:MVC生成CheckBoxList并对其验证 通过扩展方法,可以让CheckBox水平排列,生成CheckBoxList,正如"MVC扩展生成CheckBoxList并水平排列&quo ...
- cocos2d-x 3.0 rapidJson 解析操作应该注意的细节
Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstanc ...