.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 类 这个类很容易取得显示设备的高宽代码

  

  1. Rectangle r = Screen.GetWorkingArea(this);
  2. this.Location = new Point(r.Right - this.Width, r.Bottom - this.Height);

  以上两行代码实现了窗体定位到了右下角

  3、支持鼠标位置的移动

  

  通过 1,2基本上实现了我们想要的右下角弹出提示窗体的目的。但是发现窗体不能拖动 。我们想实现 这对 panel2 鼠标有拖动整个窗体的功效。 解决这个问题需要调用window内置API,user32.dll 提供了Windows用户界面相关应用程序接口。

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

三、总体效果:

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

   

  

  

  

.net winForm 实现类似qq 弹出新闻的更多相关文章

  1. C# 仿制QQ弹出新闻消息框

    打开QQ的时候,QQ新闻弹出窗体在屏幕的右下角就会慢慢升起一个小窗口,占用的地方不大,可以起到提示的作用.下面就让我们来看看,怎样用系统API来轻松实现这个功能. API原型函数: bool Anim ...

  2. WinForm实现类似QQ停靠,显示隐藏过程添加特效效果

    原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右 ...

  3. C# Winform在win10里弹出无焦点的窗口

    原文:C# Winform在win10里弹出无焦点的窗口 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangmy1988/article/det ...

  4. 纯手画WinForm的Alert提示弹出框

    纯手画WinForm的Alert弹框 一.窗体设置 设置以下属性: 属性名 属性值 说明 AutoScaleMode None 确定屏幕分辨率或字体更改时窗体如何缩放 BackColor 103, 1 ...

  5. winform C#屏幕右下角弹出消息框并自动消失

    ①弹出信息框后慢慢下降消失 在主窗体中新增按钮重命名为btnShowAndDisappearMessages,在click事件中写如下代码: private void btnShowAndDisapp ...

  6. 关于winform窗体关闭时弹出提示框,选择否时窗体也关闭的问题

    在窗体中有FormClosing这个事件,这个事件是在窗体关闭时候运行的.如果要取消某个事件的操作,那么就在该事件中写上e.Cancel=true就能取消该事件,也就是不执行该事件.所以,你要在窗体关 ...

  7. Winform form窗体已弹出框的形式出现并回传值

    From2(弹出框)回传数据到From1 Form1(数据接收form): public string Sstr; private void button1_Click(object sender, ...

  8. win7 C# winForm编程 savefiledialog 不能弹出保存窗体

    public void ResMsg()        {            while (isRecMsg)            {                //准备一个数组 准备接收 ...

  9. 网页QQ弹出

    <script language="javascript"> function cdyht(){ window.location.href='tencent://Mes ...

随机推荐

  1. 微信JS-SDK使用权限签名算法的服务端实现(.net版本)

    原文:微信JS-SDK使用权限签名算法的服务端实现(.net版本) 一.概要 微信此次开放JS接口,开放了一大批api权限,即使在未认证的订阅号也可以使用图像接口,音频接口,智能接口,地理位置,界面操 ...

  2. OBIEE SampleAppv406 自己主动启动配置

    SampleApp 一个简短的引论: SampleApp这是一个一站式服务,几乎证明OBIEE不管顶的特征可想而知. 它安装了大量的应用(数据库,OBIEE,的Endeca.TimesTen的.Ess ...

  3. linux安装和配置 mysql、redis 过程中遇到的问题记录(转)

    章节目录 mysql redis linux下部署mysql和redis网上的教程很多,这里记录一下我部署.配置的过程中遇到的一些问题和解决办法. mysql ①安装完成后启动的时候报错 Starti ...

  4. LeetCodeOJ. Maximum Depth of Binary Tree

    见问题: https://oj.leetcode.com/problems/maximum-depth-of-binary-tree/ 主题概述 Given a binary tree, find i ...

  5. JavaScript模块化编程之require.js与sea.js

    为什么要模块化:当今,网站以不再是一个简单的页面,JavaScript也不再是做一些简单的脚本验证,随着WEB.20时代到来,前端工程师面临的必将是越来越庞大的JavaScript代码,越来越复杂的内 ...

  6. linux_ubuntu12.04 卸载和安装mysql、远程访问、not allowed

    一: 安装mysql 卸载mysql 第一步 sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-se ...

  7. 用css2属性clip实现网页进度条

    前言 看了网上一些关于网页进度条样式的资料,有很多方式实现,针对其展现形式,有用图片的,有用css2属性clip,有用flash的,本人就学会了一种,下面就简单来介绍一下. css2的属性clip 如 ...

  8. MySQL编程(0) - Mysql中文乱码问题解决方案

    MySQL 5.6 for Windows 解压缩版配置安装: http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html MySQL ...

  9. MVC生成CheckBoxList并对其验证

    原文:MVC生成CheckBoxList并对其验证 通过扩展方法,可以让CheckBox水平排列,生成CheckBoxList,正如"MVC扩展生成CheckBoxList并水平排列&quo ...

  10. cocos2d-x 3.0 rapidJson 解析操作应该注意的细节

    Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstanc ...