http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 74185|回复: 32

[Winform] 仿QQ会员右下角提示框c#实现

[复制链接]
发表于 2012-7-1 16:59:47 | 显示全部楼层 |阅读模式
为了不让大家再误会,我在这里声明,我做的是在登录后的提示,只要大家用过QQ,Q会员开通过就知道 的,
先看一下效果吧

0021212.jpg
说一下实现 吧,

第一步是先把QQ会员 便当 的框给截图下来,然后放到Ps里P一下,需要做到这样就行了,看图片
lgin.png

第二步,可以在上面加一 些Lable就行了,关闭按钮是两个图片,切换的方法是这样的
[C#] 纯文本查看 复制代码
        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.BackgroundImage = ClientSystem.Properties.Resources.lgintop;
        }

        //图片进入事件
        private void pictureBox1_MouseEnter(object sender, EventArgs e)
        {
            pictureBox1.BackgroundImage = ClientSystem.Properties.Resources.lgintop1;
        }


第三步,IP的取法我就不说了有很多,还有上面的4.0的测试这些都 是加上的新闻,只要启动浏览器就行了,
启动的方法是
[C#] 纯文本查看 复制代码
//系统官网
        private void label7_Click(object sender, EventArgs e)
        {
            Process.Start("http//www.sufeinet.com/");
        }[/code]

第四步,说一下渐变显示 的效果的处理方法
[mw_shl_code=csharp,true]代码 
//界面加载
        private void Messages_Load(object sender, EventArgs e)
        {
            try
            {
                //让窗体加载时显示到右下角
                int x = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Width - 255;
                int y = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Height - 161;
                this.SetDesktopLocation(x, y);

                //加载显示信息
                ShowComptureInfo();

                //渐变显示这里表示加载
                caozuo = "load";
                this.Opacity = 0;
            }
            catch (Exception)
            {

            }
        }


caozuo有两个值一个是 load表示要向不透明方向增加量,也就是说会慢慢看清楚,还有一个close 表示要向透明方向增加量,这样会慢慢的看不到窗体,我是用一个Timer来处理的
[C#] 纯文本查看 复制代码
代码 
//定时处理渐变的效果
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (caozuo == "load")
            {
                this.Opacity += 0.09;
            }
            else if (caozuo == "close")
            {
                this.Opacity = this.Opacity - 0.09;
                if (this.Opacity == 0)
                    this.Close();
            }
        }


这样只要caozuo的值发生变化的时候 就会向某个方向开始增加渐变显示 的量
当鼠标进入的时候我是这样处理的
[C#] 纯文本查看 复制代码
//进入窗体事件
        private void Messages_MouseEnter(object sender, EventArgs e)
        {
            //停止定时关闭
            timer1.Enabled = false;
            //开始渐变加载
            caozuo = "load";
        }


这样的话就会在原来的基础上加量,也就是说如果快不显示了,当鼠标移动进入窗体时就双会慢慢的显示,当移开的时候我是这样处理的
[C#] 纯文本查看 复制代码
代码 
//窗体离开事件
        private void Messages_MouseLeave(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

  //定时关闭窗体
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer2.Enabled = true;
            caozuo = "close";//关闭窗体
        }



这样就双会启动定时关闭窗体,我的定时是6秒大家可以随便改的效果就是这样实现的
因为我的窗体 是没有标题栏的这样就不能拖动了, 很不方便,拖动窗体的方法有很多,我是这样实现 的,
[C#] 纯文本查看 复制代码
代码 
private bool isMouseDown = false;
        private Point FormLocation;     //form的location
        private Point mouseOffset;      //鼠标的按下位置

        //鼠标安下
        private void Messages_MouseDown(object sender, MouseEventArgs e)
        {
            try
            {
                if (e.Button == MouseButtons.Left)
                {
                    isMouseDown = true;
                    FormLocation = this.Location;
                    mouseOffset = Control.MousePosition;
                }
            }
            catch (Exception)
            {

            }
        }

        //鼠标移动
        private void Messages_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                int _x = 0;
                int _y = 0;
                if (isMouseDown)
                {
                    Point pt = Control.MousePosition;
                    _x = mouseOffset.X - pt.X;
                    _y = mouseOffset.Y - pt.Y;

                    this.Location = new Point(FormLocation.X - _x, FormLocation.Y - _y);
                }
            }
            catch (Exception)
            {

            }
        }

        //鼠标松开
        private void Messages_MouseUp(object sender, MouseEventArgs e)
        {
            try
            {
                isMouseDown = false;
            }
            catch (Exception)
            {

            }
        }

关于这个内容 可以参考 我的文章
拖动无标题窗体的方法
http://www.sufeinet.com/forum.php?mod=viewthread&tid=68

下面把我实现 的全部代码贴出来吧
[C#] 纯文本查看 复制代码
代码 
using  System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClientSystem.ClientSystemServices;
using BaseFunction;
using System.Diagnostics;

namespace ClientSystem
{
    /// <summary>
    /// 提示窗体  苏飞
    /// </summary>
    public partial class Messages : Form
    {
        public Messages()
        {
            InitializeComponent();
        }
        //营业厅完整信息
        public OfficeInfo OfficeInfo { get; set; }

        #region //私有变量和方法

        private ClientSystemServices.Service1SoapClient user = new Service1SoapClient();

        //显示登录用户的计算机信息
        public void ShowComptureInfo()
        {
            //CUP
            //label9.Text = ComputerInfo.GetCpuID();

            //硬盘
            //label26.Text = ComputerInfo.GetDiskID();

            //IP
            lblIP.Text = ComputerInfo.GetIPAddress();

            //上次登录IP
            lbloldIP.Text = ComputerInfo.GetIPAddress();

            //用户名
            lblUser.Text = OfficeInfo.ofLogin + " 商户欢迎您";

            //计算机名称
            //label21.Text = ComputerInfo.GetComputerName();

            //操作系统
            //label23.Text = ComputerInfo.GetSystemType();

            //当前用户
            //label25.Text = ComputerInfo.GetUserName();
        }

        #endregion

        //界面加载
        private void Messages_Load(object sender, EventArgs e)
        {
            try
            {
                //让窗体加载时显示到右下角
                int x = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Width - 255;
                int y = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Height - 161;
                this.SetDesktopLocation(x, y);

                //加载显示信息
                ShowComptureInfo();

                //渐变显示这里表示加载
                caozuo = "load";
                this.Opacity = 0;
            }
            catch (Exception)
            {

            }
        }

        //关闭按钮
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //图片离开事件
        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.BackgroundImage = ClientSystem.Properties.Resources.lgintop;
        }

        //图片进入事件
        private void pictureBox1_MouseEnter(object sender, EventArgs e)
        {
            pictureBox1.BackgroundImage = ClientSystem.Properties.Resources.lgintop1;
        }

        //修改密码
        private void label6_Click(object sender, EventArgs e)
        {
            ChangePwd frm = new ChangePwd();
            frm.OfficeInfo = this.OfficeInfo;
            frm.Show();
        }

        //系统官网
        private void label7_Click(object sender, EventArgs e)
        {
            Process.Start("http://www.smxzc.com/");
        }

        #region//拖动无标题窗体

        private bool isMouseDown = false;
        private Point FormLocation;     //form的location
        private Point mouseOffset;      //鼠标的按下位置

        //鼠标安下
        private void Messages_MouseDown(object sender, MouseEventArgs e)
        {
            try
            {
                if (e.Button == MouseButtons.Left)
                {
                    isMouseDown = true;
                    FormLocation = this.Location;
                    mouseOffset = Control.MousePosition;
                }
            }
            catch (Exception)
            {

            }
        }

        //鼠标移动
        private void Messages_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                int _x = 0;
                int _y = 0;
                if (isMouseDown)
                {
                    Point pt = Control.MousePosition;
                    _x = mouseOffset.X - pt.X;
                    _y = mouseOffset.Y - pt.Y;

                    this.Location = new Point(FormLocation.X - _x, FormLocation.Y - _y);
                }
            }
            catch (Exception)
            {

            }
        }

        //鼠标松开
        private void Messages_MouseUp(object sender, MouseEventArgs e)
        {
            try
            {
                isMouseDown = false;
            }
            catch (Exception)
            {

            }
        }
        #endregion

        //定时关闭窗体
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer2.Enabled = true;
            caozuo = "close";//关闭窗体
        }

        //进入窗体事件
        private void Messages_MouseEnter(object sender, EventArgs e)
        {
            //停止定时关闭
            timer1.Enabled = false;
            //开始渐变加载
            caozuo = "load";
        }

        //窗体离开事件
        private void Messages_MouseLeave(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        string caozuo = "";

        //定时处理渐变的效果
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (caozuo == "load")
            {
                this.Opacity += 0.09;
            }
            else if (caozuo == "close")
            {
                this.Opacity = this.Opacity - 0.09;
                if (this.Opacity == 0)
                    this.Close();
            }
        }
    }
}






1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2012-7-29 07:09:20 | 显示全部楼层
赞一个,非常好
 楼主| 发表于 2012-7-29 19:19:00 | 显示全部楼层
希望大家多我支持
发表于 2012-7-31 19:28:02 | 显示全部楼层
学习,
发表于 2012-8-1 16:31:15 | 显示全部楼层
额,还算可以吧~~~~
发表于 2012-8-1 16:34:39 | 显示全部楼层
OfficeInfo 是什么?怎么不上传上来呢?
发表于 2012-8-1 17:39:22 | 显示全部楼层
剪刀手 发表于 2012-8-1 16:34
OfficeInfo 是什么?怎么不上传上来呢?

OfficeInfo 是一个类,在这里基本上用不上,您只要参考方式,具体的数据可以修改正自己的。
发表于 2012-8-7 20:01:07 | 显示全部楼层
非常喜欢,,,
发表于 2012-8-8 02:32:29 | 显示全部楼层
支持是我需要的
发表于 2012-10-5 11:22:43 | 显示全部楼层
很需要、、、、、、、
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 02:14

© 2014-2021

快速回复 返回顶部 返回列表