在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例桌面应用界面/GUI → C# 仿QQ2014 界面皮肤 示例源码

C# 仿QQ2014 界面皮肤 示例源码

桌面应用界面/GUI

下载此实例
  • 开发语言:C#
  • 实例大小:3.08M
  • 下载次数:109
  • 浏览次数:1359
  • 发布时间:2017-11-24
  • 实例类别:桌面应用界面/GUI
  • 发 布 人:plexpt
  • 文件格式:.zip
  • 所需积分:4
 相关标签: QQ 2 1 0

实例介绍

【实例简介】高仿qq2014    

【实例截图】


from clipboard


from clipboard



from clipboard


from clipboard


from clipboard


from clipboard

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using LayeredSkin.Controls;
using LayeredSkin.DirectUI;
using QQ.Controls;
using QQ_LayeredSkin.Menu;
using QQ_LayeredSkin.Properties;

namespace QQ_LayeredSkin
{
    public partial class FrmMain : LayeredBaseForm
    {
        #region 变量


        /// <summary>
        /// 全局DuiBaseControl控件申明(重复利用)
        /// </summary>
        private DuiBaseControl _baseControl;

        /// <summary>
        /// 选中的好友项ID(为选中为-1)
        /// </summary>
        public int ItemsIndex = -1;

        /// <summary>
        /// 选中的好友项ID(为选中为-1)
        /// </summary>
        public int GroupItemsIndex = -1;

        private Font _font = new Font("微软雅黑", 9.3F, FontStyle.Regular, GraphicsUnit.Point,
            ((byte)(134)));
        /// <summary>
        /// 是否已读取完列表
        /// </summary>
        public bool IsLoadedItems = false;

        public static List<FrmChat> FrmChatsList = new List<FrmChat>();

        public FrmMainMenu QFrmMainMenu = null;
        public FrmSetting QFrmSetting = null;
        #endregion

        #region 构造函数

        public FrmMain()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
            layeredDragBar1.ForeColor =
                layeredDragBar2.ForeColor =
                    layeredDragBar3.ForeColor = layeredDragBar4.ForeColor = Color.FromArgb(255, Color.White);
        }

        #endregion

        #region 方法

        /// <summary>
        /// 加载头部信息
        /// </summary>
        /// <param name="headBitmap">头像</param>
        /// <param name="nicName">昵称</param>
        /// <param name="onlineState">在线状态</param>
        /// <param name="lv">等级</param>
        /// <param name="isVip">是否是VIP</param>
        /// <param name="signature">个性签名</param>
        /// <param name="qzoneCount">控件信息数</param>
        /// <param name="mailCoumt">邮件信息数</param>
        /// <param name="weatherBitmap">天气状态图片</param>
        public void LoadHeadInfo(Bitmap headBitmap, string nicName, int onlineState, int lv, bool isVip,
            string signature, int qzoneCount, int mailCoumt, Bitmap weatherBitmap)
        {
            #region 加载头像

            DuiBaseControl head = DuiBaseControlClass.AddDuiBaseControl(headBitmap, ImageLayout.Stretch,
                Cursors.Hand,
                new Size(65, 65), new Point(5, 5));
            head.MouseEnter  = headimgMouseEnter;
            head.MouseLeave  = headimgMouseLeave;
            HeadBaseControl.DUIControls.Add(head);

            #endregion

            #region 加载昵称

            HeadBaseControl.DUIControls.Add(DuiBaseControlClass.AddDuiLabel(nicName, _font, new Size(68, 20),
                new Point(78, 5)));

            #endregion

            #region 加载在线状态

            HeadBaseControl.DUIControls.Add(BandEven(DuiBaseControlClass.AddDuiBaseControl(Resources.imonline, ImageLayout.None,
                Cursors.Default,
                new Size(15, 15), new Point(147, 5))));
            HeadBaseControl.DUIControls[2].MouseDown  = StateMenuMouseDown;

            #endregion

            #region 加载等级

            HeadBaseControl.DUIControls.Add(BandEven(DuiBaseControlClass.AddDuiBaseControl(Resources.lv64, ImageLayout.Center,
                Cursors.Default,
                new Size(26, 14), new Point(167, 6))));

            #endregion

            #region 加载Vip状态

            HeadBaseControl.DUIControls.Add(BandEven(
                DuiBaseControlClass.AddDuiBaseControl(isVip ? Resources.QQVIP_LIGHT : Resources.QQVIP_GRAY,
                    ImageLayout.Center, Cursors.Default, new Size(26, 14), new Point(195, 6))));

            #endregion

            #region 加载个性签名

            HeadBaseControl.DUIControls.Add(DuiBaseControlClass.AddDuiLabel(signature, _font, new Size(145, 20),
                new Point(78, 30)));

            #endregion

            #region 加载组件按钮

            //空间
            DuiBaseControl toptools = DuiBaseControlClass.AddDuiBaseControl(Resources.save_qzong_hover, ImageLayout.None,
                Cursors.Default,
                new Size(30, 21), new Point(78, 50));
            DuiLabel countLabel = DuiBaseControlClass.AddDuiLabel(qzoneCount.ToString(), _font, new Size(15, 21),
                new Point(17, 3));
            toptools.Controls.Add(countLabel);
            HeadBaseControl.DUIControls.Add(BandEven(toptools));

            //web
            toptools = DuiBaseControlClass.AddDuiBaseControl(Resources.CustomerCenter, ImageLayout.None, Cursors.Default,
                new Size(21, 21), new Point(108, 50));
            HeadBaseControl.DUIControls.Add(BandEven(toptools));

            //mail
            toptools = DuiBaseControlClass.AddDuiBaseControl(Resources.mail, ImageLayout.None, Cursors.Default,
                new Size(35, 21), new Point(128, 50));
            countLabel = DuiBaseControlClass.AddDuiLabel(mailCoumt.ToString(), _font, new Size(21, 21), new Point(17, 3));
            toptools.Controls.Add(countLabel);
            HeadBaseControl.DUIControls.Add(BandEven(toptools));

            //VIP
            toptools = DuiBaseControlClass.AddDuiBaseControl(Resources.vip_head, ImageLayout.None, Cursors.Default,
                new Size(21, 21), new Point(168, 50));
            HeadBaseControl.DUIControls.Add(BandEven(toptools));

            #endregion

            #region 加载天气

            BaseControlWeather.BackgroundImage = weatherBitmap;

            #endregion
        }

        /// <summary>
        /// 加载底部菜单按钮及工具栏
        /// </summary>
        public void LoadButtonToolAndMenu()
        {
            #region 初始化第一行16*16工具栏

            Bitmap[] btmBitmaps16 = new Bitmap[6]
            {
                Resources.weiyun, Resources.webqq_16, Resources.chongwu, Resources.music, Resources.qqgame_16,
                Resources.chong
            };
            for (int i = 0; i < btmBitmaps16.Length; i  )
            {
                AddBottontoolItems16(btmBitmaps16[i], i, 0);
            }

            #endregion

            #region 初始化第二行24*24菜单及工具栏

            Bitmap[] btmBitmaps24 = new Bitmap[5]
            {
                Resources.MainMenuShine_01, Resources.tools_hover, Resources.message_highlight,
                Resources.filemanager_hover,
                Resources.myCollection_mainpanel_hover
            };
            for (int i = 0; i < btmBitmaps24.Length; i  )
            {
                AddBottontoolItems24(btmBitmaps24[i], i, 1);
            }

            #region 加载菜单查找按钮

            _baseControl = DuiBaseControlClass.AddDuiBaseControl(null, ImageLayout.None, Cursors.Default,
                new Size(65, 28), new Point(24 * btmBitmaps24.Length   15, 24   5));

            DuiLabel img = DuiBaseControlClass.AddDuiLabel("", _font, new Size(24, 24), new Point(4, 4));
            img.BackgroundImage = Resources.find_hover;
            img.BackgroundImageLayout = ImageLayout.Center;
            //    new Size(24, 24), new Point(4, 4), false);
            //_baseControl.Controls.Add(img);
            //添加查找文字
            DuiLabel searchlb = DuiBaseControlClass.AddDuiLabel("查找", _font, new Size(45, 20), new Point(28, 5));
            _baseControl.Controls.Add(img);
            _baseControl.Controls.Add(searchlb);
            BottonBaseControl.DUIControls.Add(_baseControl);

            #endregion

            #endregion
        }

        /// <summary>
        /// 初始化好友列表
        /// </summary>
        public void CreatList()
        {
            #region 添加好友列表

            //WebQq.FriendsList = WebQq.FriendsList.OrderByDescending(vip => vip.Isvip).ThenByDescending(flag => flag.IsOnline).ToList();
            //for (int g = 0; g < WebQq.GetCategories.Count; g  )
            //{
            //    DuiLabel group = ChatListBox.AddChatGroup(WebQq.GetCategories[g].Name, "close",
            //        WebQq.GetFriendsCountFormCategories(WebQq.GetCategories[g].Index), 0);
            //    ChatListBox.Items.Add(group);
            //    ChatListBox.RefreshList();
            //    Application.DoEvents();
            //    for (int i = 0; i < WebQq.FriendsList.Count; i  )
            //    {
            //        if (WebQq.FriendsList[i].Categoriesid == WebQq.GetCategories[g].Index)
            //        {
            //            TagFrirendInfo tagFrirendInfo = ChatListBox.GetObj(Resources._1_100, WebQq.FriendsList[i]);

            //            DuiBaseControl item = ChatListBox.AddChatItems(tagFrirendInfo);
            //            WebQq.FriendsList[i].ChartListIndex = int.Parse(item.Name);
            //            item.Tag = tagFrirendInfo;
            //            ChatListBox.Items.Add(item);
            //            ChatListBox.RefreshList();
            //        }
            //    }
            //}
            for (int i = 0; i < 5; i  )
            {
                DuiLabel group = ChatListBox.AddChatGroup(string.Format("好友分组{0}",i), "close",
                    10, 0);
                ChatListBox.Items.Add(group);
                ChatListBox.Items.Add(group);
                ChatListBox.RefreshList();
                Application.DoEvents();
                for (int j = 0; j < 20; j  )
                {
                    TagFrirendInfo tagFrirendInfo = ChatListBox.GetObj(Resources._1_100, string.Format("昵称{0}{1}", i, j), string.Format("备注{0}{1}", i, j), string.Format("个性签名{0}{1}", i, j), string.Format("1234567{0}{1}", i, j),"1","0");

                    DuiBaseControl item = ChatListBox.AddChatItems(tagFrirendInfo);
                    item.Tag = tagFrirendInfo;
                    ChatListBox.Items.Add(item);
                    ChatListBox.RefreshList();
                    Application.DoEvents();
                }
            }
            #endregion

            IsLoadedItems = true;
            ChatListBox.RefreshList();
        }

        /// <summary>
        /// 添加底部Tool按钮(大小16*16)
        /// </summary>
        /// <param name="btmBitmap">tool图标</param>
        /// <param name="index">从左到右第几项</param>
        /// <param name="heightindex">高度行号下标</param>
        public void AddBottontoolItems16(Bitmap btmBitmap, int index, int heightindex)
        {
            DuiBaseControl BottontoolItems = new DuiBaseControl();
            BottontoolItems.Size = new System.Drawing.Size(24, 24);
            BottontoolItems.Location = new Point(24 * index   5, heightindex * 30   5);
            //vip.BackColor = Color.Transparent;
            BottontoolItems.BackgroundImage = btmBitmap;
            BottontoolItems.Tag = index;
            BottontoolItems.BackgroundImageLayout = ImageLayout.Center;
            BottontoolItems.MouseClick  = Tools16MouseClick;
            BottontoolItems.MouseEnter  = HightMouseEnter;
            BottontoolItems.MouseLeave  = HightMouseLeave;
            BottonBaseControl.DUIControls.Add(BottontoolItems);
        }

        /// <summary>
        /// 添加底部菜单Tool按钮(大小24*24)
        /// </summary>
        /// <param name="btmBitmap">菜单tool图标</param>
        /// <param name="index">从左到右第几项</param>
        /// <param name="heightindex">高度行号下标</param>
        public void AddBottontoolItems24(Bitmap btmBitmap, int index, int heightindex)
        {
            DuiBaseControl BottontoolItems = new DuiBaseControl();
            BottontoolItems.Size = new System.Drawing.Size(28, 28);
            if (index == 0)
                BottontoolItems.Location = new Point(24 * index   5, heightindex * 24   5);
            else
            {
                BottontoolItems.Location = new Point(24 * index   10, heightindex * 24   5);
            }
            //vip.BackColor = Color.Transparent;
            BottontoolItems.BackgroundImage = btmBitmap;
            BottontoolItems.BackgroundImageLayout = ImageLayout.Center;
            BottontoolItems.Tag = index;
            BottontoolItems.MouseClick  = Tools24MouseClick;
            BottontoolItems.MouseEnter  = HightMouseEnter;
            BottontoolItems.MouseLeave  = HightMouseLeave;
            BottonBaseControl.DUIControls.Add(BottontoolItems);
        }

        public DuiBaseControl BandEven(DuiBaseControl dbct)
        {
            dbct.MouseEnter  = HightMouseEnter;
            dbct.MouseLeave  = HightMouseLeave;
            return dbct;
        }

        public static FrmChat FindFrmChat(string qq)
        {
            FrmChat fc = null;
            for (int i = 0; i < FrmChatsList.Count; i  )
            {
                if (!FrmChatsList[i].IsDisposed)
                {
                    if (FrmChatsList[i].QtagFrirendInfo.QQ == qq)
                    {
                        fc = FrmChatsList[i];
                        break;
                    }
                }
            }
            return fc;
        }

        #endregion

        #region 事件

        #region 窗体初始化加载事件

        /// <summary>
        /// 窗体加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmMain_Load(object sender, EventArgs e)
        {
            Hide();
            timer1.Enabled = true;
            notifyIcon1.Text = string.Format("QQ:{0}({1})", "BinGoo", "315567586");
            //设置启动特效
            this.Animation.Effect = new LayeredSkin.Animations.RandomCurtainEffect();
            //初始化tab背景图片
            layeredTabControl1.BackgroundImage = Resources.tabbg;
            layeredTabControl1.BackgroundImageLayout = ImageLayout.Tile;
            //初始化搜索框样式
            TxtSearch.BackColor = BtnSearch.BackColor = Color.Gainsboro;
            //初始化底部工具栏透明样式
            BottonBaseControl.BackColor = Color.FromArgb(90, Color.White);
 
            //获取头像
            Bitmap headBitmap = Resources.勾引;

            //List<GroupInfo> gi = WebQq.GetGroups();
            //加载头部个人信息
            LoadHeadInfo(headBitmap, "BinGoo", 0, 64, true, "没有拆不散的情侣,只有不努力的小三... ...", 5, 99, Resources.Big_2);
            //加载底部工具栏
            LoadButtonToolAndMenu();

            this.BeginInvoke((MethodInvoker)delegate()
            {
                //清除好友列表
                ChatListBox.Items.Clear();
                //加载好友与群列表
                CreatList();

                notifyIcon1.Icon = Resources.ggimonline;
                notifyIcon1.Text = string.Format("QQ:{0}({1})\r\n声音:开启\r\n消息提示框:关闭\r\n会话消息:任务栏头像不闪动", "BinGoo",
                   "315567586");
                Show();
                IsLoadedItems = true;
            });

        }

        #endregion

        #region 最小化和退出程序按钮事件

        /// <summary>
        /// 关闭按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnCloseClick(object sender, EventArgs e)
        {

            this.Animation.Effect = new LayeredSkin.Animations.GradualCurtainEffect();
            this.Animation.Asc = true;
            Animation.Interval = 1;
            //等动画结束后关闭程序
            Thread t = new Thread(new ThreadStart(CloseSystem));
            t.Start();

            Close();
        }

        //延迟一秒等待完成动画效果后关闭系统方法
        public void CloseSystem()
        {
            Thread.Sleep(1000);
            System.Environment.Exit(0);
        }

        /// <summary>
        /// 最小化按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnMiniClick(object sender, EventArgs e)
        {
            //this.WindowState = FormWindowState.Minimized;
            this.Hide();
        }

        #endregion

        #region 选项卡选择改变事件

        /// <summary>
        /// TabControl选项切换时触发的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TabControlSelectedIndexChanged(object sender, EventArgs e)
        {
            switch (layeredTabControl1.SelectedIndex)
            {
                case 0:
                    tabPage1.ImageIndex = 2;
                    tabPage2.ImageIndex = 3;
                    tabPage3.ImageIndex = 6;
                    break;
                case 1:
                    tabPage1.ImageIndex = 0;
                    tabPage2.ImageIndex = 5;
                    tabPage3.ImageIndex = 6;
                    break;
                case 2:
                    tabPage1.ImageIndex = 0;
                    tabPage2.ImageIndex = 3;
                    tabPage3.ImageIndex = 8;
                    break;
            }
        }

        #endregion

        #region 我的头像单击事件

        /// <summary>
        /// 点击头像事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void headimg_Click(object sender, EventArgs e)
        {

        }
        private void headimgMouseEnter(object sender, EventArgs e)
        {
            //窗体的TopLeft值
            int UserTop = ((DuiBaseControl) sender).LocationToScreen.Y;
            int UserLeft = this.Left - 279;
            //屏幕不包括任务栏的高度
            int PH = Screen.GetWorkingArea(this).Height;
            //判断是否超过屏幕高度
            if (UserTop   181 > PH)
            {
                UserTop = PH - 181 - 5;
            }
            //判断是否小于屏幕左边
            if (UserLeft < 0)
            {
                UserLeft = this.Right   5;
            }
            //窗体不为空传值
            if (_frmUserInfo != null)
            {
                if (_frmUserInfo.IsDisposed)
                {
                    _frmUserInfo = new FrmUserinfo(new Point(UserLeft, UserTop));
                }
                    
            }
            else
            {
                    _frmUserInfo = new FrmUserinfo(new Point(UserLeft, UserTop));
            }
            
            _frmUserInfo.Location = _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
            _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
            _frmUserInfo.ToolsControl.Visible = true;
            //_frmUserInfo.RefleshChatData("315567586", "BinGoo", "没有拆不散的情侣,只有不努力的小三... ...");
            _frmUserInfo.MyInfo("BinGoo", "没有拆不散的情侣,只有不努力的小三... ...");
            _frmUserInfo.Height = 260;
            _frmUserInfo.IsClose = false;
            _frmUserInfo.Show();
        }
        private void headimgMouseLeave(object sender, EventArgs e)
        {
            if (_frmUserInfo == null)
            {
                return;
            }
            if (!_frmUserInfo.IsDisposed)
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(l =>
                {
                    while (!_frmUserInfo.IsDisposed)
                    {
                        Thread.Sleep(300);
                        if (!_frmUserInfo.Bounds.Contains(Cursor.Position))
                        {

                            _frmUserInfo.IsClose = true;

                            _frmUserInfo.Close();
                        }
                    }
                }));
            }
        }
        #endregion

        #region 查找文本框事件

        /// <summary>
        /// 搜索框文本改变时触发的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TxtSearch_TextChanged(object sender, EventArgs e)
        {
            if (TxtSearch.Text != "")
            {
                TxtSearch.BackColor = BtnSearch.BackColor = Color.White;
            }
            else
            {
                TxtSearch.BackColor = BtnSearch.BackColor = Color.Gainsboro;
            }
        }

        /// <summary>
        /// 查找按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnSearch_Click(object sender, EventArgs e)
        {
            ChatListBox.IsSmallHead = !ChatListBox.IsSmallHead;
            ChatListBox.FreshItems();
        }

        #endregion

        #region 悬浮天气窗体事件

        private FrmWeather frmWeather;

        private void WeatherMouseEnter(object sender, EventArgs e)
        {
            //窗体的TopLeft值
            int UserTop = this.Top;
            //int UserLeft = this.Left - 240 - 2;
            int UserLeft = this.Right;
            //屏幕不包括任务栏的高度
            int PH = Screen.GetWorkingArea(this).Height;
            //判断是否超过屏幕高度
            if (UserTop   250 > PH)
            {
                UserTop = PH - 250 - 2;
            }

            int PW = Screen.GetWorkingArea(this).Width;
            //判断是否大于屏幕右边
            if (UserLeft   240   2 > PW)
            {
                UserLeft = this.Left - 240 - 2;
            }
            //窗体不为空传值
            if (frmWeather != null)
            {
                if (frmWeather.IsDisposed)
                    frmWeather = new FrmWeather(new Point(UserLeft, UserTop));
            }
            else
            {
                frmWeather = new FrmWeather(new Point(UserLeft, UserTop));

            }
            frmWeather.Location = new Point(UserLeft, UserTop);
            frmWeather.LoactionPoint = new Point(UserLeft, UserTop);
            frmWeather.IsOpen = true;
            frmWeather.TimShow(true);
        }

        private void WeatherMouseLeave(object sender, EventArgs e)
        {
            if (frmWeather == null)
            {
                return;
            }
            frmWeather.IsOpen = false;
            //if (frmWeather.Visible)
            //{
            //    frmWeather.Hide();
            //}
        }

        #endregion

        #region 状态按钮及状态items单击改变事件

        /// <summary>
        /// 状态按钮点击事件(弹出状态菜单选项)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void StateMenuMouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                DuiBaseControl send = (DuiBaseControl)sender;
                this.contextMenuStrip1.Show(new Point(send.LocationToScreen.X, send.LocationToScreen.Y   send.Height));

            }
        }

        private void StateItemsClick(object sender, EventArgs e)
        {
            string state = ((ToolStripMenuItem)sender).Tag.ToString();
            switch (state)
            {
                case "0x0A":
                    Setstateimg("在线");
                    break;
                case "0x14":
                    Setstateimg("隐身");
                    break;
                case "0x1E":
                    Setstateimg("离开");
                    break;
                case "0x32":
                    Setstateimg("忙碌");
                    break;
                case "0x3C":
                    Setstateimg("q我吧");
                    break;
                case "0x46":
                    Setstateimg("请勿打扰");
                    break;
                case "0x28":
                    Setstateimg(" 离线");
                    break;
            }
            //HeadBaseControl.DUIControls[2].BackgroundImage = ((ToolStripMenuItem) sender).Image;
        }

        /// <summary>
        /// 更改状态图片
        /// </summary>
        /// <param name="state"></param>
        public void Setstateimg(string state)
        {
            switch (state)
            {
                case "在线":
                    HeadBaseControl.DUIControls[2].BackgroundImage = 在线ToolStripMenuItem.Image;
                    notifyIcon1.Icon =Resources.ggimonline;
                    break;
                case "隐身":
                    HeadBaseControl.DUIControls[2].BackgroundImage = 隐身ToolStripMenuItem.Image;
                    notifyIcon1.Icon = Resources.gginvisible;
                    break;
                case "离开":
                    HeadBaseControl.DUIControls[2].BackgroundImage = 离开ToolStripMenuItem.Image;
                    notifyIcon1.Icon = Resources.ggaway;
                    break;
                case "忙碌":
                    HeadBaseControl.DUIControls[2].BackgroundImage = 忙碌ToolStripMenuItem.Image;
                    notifyIcon1.Icon = Resources.ggbusy;
                    break;
                case "q我吧":
                    HeadBaseControl.DUIControls[2].BackgroundImage = q我吧ToolStripMenuItem.Image;
                    notifyIcon1.Icon = Resources.ggQme;
                    break;
                case "请勿打扰":
                    HeadBaseControl.DUIControls[2].BackgroundImage = 请勿打扰ToolStripMenuItem.Image;
                    notifyIcon1.Icon = Resources.ggmute;
                    break;
                case "离线":
                    HeadBaseControl.DUIControls[2].BackgroundImage = 离线ToolStripMenuItem.Image;
                    notifyIcon1.Icon = Resources.ggoffline;
                    break;
            }
        }

        #endregion

        #region 任务栏图标相关事件

        //private FrmMsglist _frmMsglist;

        private void notifyIcon1_MouseMove(object sender, MouseEventArgs e)
        {
            int left = (Cursor.Position.X / 20 * 20) - 297 / 2;

            //窗体不为空传值
            //if (_frmMsglist != null)
            //{
            //    if (_frmMsglist.ChatList.Items.Count < 1)
            //    {
            //        notifyIcon1.Text = string.Format("QQ:{0}({1})\r\n声音:开启\r\n消息提示框:关闭\r\n会话消息:任务栏头像不闪动",
            //            WebQq.user.QQNick, WebQq.GetTrueUin(WebQq.user.QQID.ToString(), "1"));
            //        //this.notifyIcon1.ShowBalloonTip(30, "提醒", "监控程序正在运行", ToolTipIcon.Info);
            //    }
            //    else
            //    {
            //        notifyIcon1.Text = "";
            //        _frmMsglist.Left = left;
            //        _frmMsglist.timShowShow();
            //    }
            //}
            //else
            //{
            //    _frmMsglist = new FrmMsglist(this.WebQq);
            //    _frmMsglist.Left = left;
            //    _frmMsglist.timShowShow();
            //}
        }

        /// <summary>
        /// 鼠标左键单击任务栏图标显示窗体,右键显示菜单栏
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                this.Show();
            }
        }

        #endregion

        #region 好友列表项相关事件

        private FrmUserinfo _frmUserInfo;

        /// <summary>
        /// 鼠标移动到头像时触发事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ChatListBoxMouseEnterHead(object sender, ChatListEventArgs e)
        {
            //窗体的TopLeft值
            int UserTop = e.HeadBaseControl.LocationToScreen.Y;
            int UserLeft = this.Left - 279;
            //屏幕不包括任务栏的高度
            int PH = Screen.GetWorkingArea(this).Height;
            //判断是否超过屏幕高度
            if (UserTop   181 > PH)
            {
                UserTop = PH - 181 - 5;
            }
            //判断是否小于屏幕左边
            if (UserLeft < 0)
            {
                UserLeft = this.Right   5;
            }

            TagFrirendInfo tag = (TagFrirendInfo)e.SelectItem.Tag;
            //窗体不为空传值
            if (_frmUserInfo != null)
            {
                if (_frmUserInfo.IsDisposed)
                {
                    _frmUserInfo = new FrmUserinfo(new Point(UserLeft, UserTop));
                }
                if (e.SelectItem.Tag != null)
                {
                    _frmUserInfo.Location = _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
                    _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
                    _frmUserInfo.ToolsControl.Visible = true;
                    _frmUserInfo.RefleshChatData(tag.Uin, tag.NicName, tag.Sign);
                    _frmUserInfo.Height = 260;
                    _frmUserInfo.IsClose = false;
                    _frmUserInfo.Show();
                }
            }
            else
            {
                if (e.SelectItem.Tag != null)
                {
                    _frmUserInfo = new FrmUserinfo(new Point(UserLeft, UserTop));
                    _frmUserInfo.Location = new Point(UserLeft, UserTop);
                    _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
                    _frmUserInfo.ToolsControl.Visible = true;
                    _frmUserInfo.RefleshChatData(tag.Uin, tag.NicName, tag.Sign);
                    _frmUserInfo.Height = 260;
                    _frmUserInfo.IsClose = false;
                    _frmUserInfo.Show();
                }
            }
        }

        ///// <summary>
        ///// 鼠标离开头像控件时不显示边框
        ///// </summary>
        ///// <param name="sender"></param>
        ///// <param name="e"></param>
        private void ChatListBoxMouseLeaveHead(object sender, ChatListEventArgs e)
        {
            if (_frmUserInfo == null)
            {
                return;
            }
            if (!_frmUserInfo.IsDisposed)
            {
                ThreadPool.QueueUserWorkItem(new WaitCallback(l =>
                {
                    while (!_frmUserInfo.IsDisposed)
                    {
                        Thread.Sleep(300);
                        if (!_frmUserInfo.Bounds.Contains(Cursor.Position))
                        {

                            _frmUserInfo.IsClose = true;

                            _frmUserInfo.Close();
                        }
                    }
                }));
            }
        }

        /// <summary>
        /// 双击好友列表事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <param name="es"></param>
        private void ChatListBoxDoubleClickItem(object sender, ChatListClickEventArgs e, MouseEventArgs es)
        {
            TagFrirendInfo tag = e.Friendinformation;
            //MessageBox.Show(string.Format("QQ:{0}\r\nVip:{1}\r\nVip等级{2}\r\n在线情况:{3}\r\nUIN{4}", tag.QQ, tag.IsVip,
            //    tag.VipLv, tag.FlagStatus, tag.Uin));
            FrmChat fc = FindFrmChat(tag.QQ);
            if (fc == null)
            {
                fc = new FrmChat(tag);
            }
            FrmChatsList.Add(fc);
            fc.Show();
        }

        #endregion

        #region 群列表项相关事件

        /// <summary>
        /// 鼠标移动到头像时触发事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GroupListBoxMouseEnterHead(object sender, ChatListEventArgs e)
        {
            ////窗体的TopLeft值
            //int UserTop = e.HeadBaseControl.LocationToScreen.Y;
            //int UserLeft = this.Left - 279;
            ////屏幕不包括任务栏的高度
            //int PH = Screen.GetWorkingArea(this).Height;
            ////判断是否超过屏幕高度
            //if (UserTop   181 > PH)
            //{
            //    UserTop = PH - 181 - 5;
            //}
            ////判断是否小于屏幕左边
            //if (UserLeft < 0)
            //{
            //    UserLeft = this.Right   5;
            //}

            //TagFrirendInfo tag = (TagFrirendInfo)e.SelectItem.Tag;
            ////窗体不为空传值
            //if (_frmUserInfo != null)
            //{
            //    if (e.SelectItem.Tag != null)
            //    {
            //        _frmUserInfo.Location = _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
            //        _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
            //        _frmUserInfo.ToolsControl.Visible = false;
            //        _frmUserInfo.RefleshChatData(tag.Uin, tag.NicName, tag.Sign);
            //        _frmUserInfo.Height = 200;
            //        _frmUserInfo.Show();
            //    }
            //}
            //else
            //{
            //    if (e.SelectItem.Tag != null)
            //    {
            //        _frmUserInfo = new FrmUserInfo(WebQq, new Point(UserLeft, UserTop));
            //        _frmUserInfo.Location = new Point(UserLeft, UserTop);
            //        _frmUserInfo.LoactionPoint = new Point(UserLeft, UserTop);
            //        _frmUserInfo.ToolsControl.Visible = false;
            //        _frmUserInfo.RefleshChatData(tag.Uin, tag.NicName, tag.Sign);
            //        _frmUserInfo.Height = 200;
            //        _frmUserInfo.Show();
            //    }
            //}
        }

        /// <summary>
        /// 鼠标离开头像控件时不显示边框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GroupListBoxMouseLeaveHead(object sender, ChatListEventArgs e)
        {
            //if (_frmUserInfo == null)
            //{
            //    return;
            //}
            //if (_frmUserInfo.Visible)
            //{
            //    _frmUserInfo.Hide();
            //}
        }

        /// <summary>
        /// 双击好友列表事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <param name="es"></param>
        private void GroupListBoxDoubleClickItem(object sender, ChatListClickEventArgs e, MouseEventArgs es)
        {
            //TagFrirendInfo tag = e.Friendinformation;
            //MessageBox.Show(string.Format("群号:{0}\r\nVip:{1}\r\nVip等级{2}\r\n在线情况:{3}\r\nUIN{4}", tag.QQ, tag.IsVip,
            //    tag.VipLv, tag.FlagStatus, tag.Uin));
            //FrmChat fc = FindFrmChat(tag.Uin, "2");
            //if (fc == null)
            //{
            //    if (tag.QQ == "")
            //        tag.QQ = WebQq.GetTrueUin(tag.Uin, "2");
            //    e.SelectChatItem.Tag = tag;
            //    fc = new FrmChat(this.WebQq, tag, "2");
            //}
            //FrmChatsList.Add(fc);
            //fc.Show();
        }

        #endregion

        #region 登陆图标闪动
        Icon[] Loginicons =
            {
                Resources.Loading_1, Resources.Loading_2, Resources.Loading_3,
                Resources.Loading_4, Resources.Loading_5, Resources.Loading_6
            };
        int IcoIndex = 0;
        private void ShowIconTimerTick(object sender, EventArgs e)
        {
            if (!IsLoadedItems)
            {
                notifyIcon1.Icon = Loginicons[IcoIndex];
                IcoIndex  ;
                if (IcoIndex == 6)
                    IcoIndex = 0;
            }
            timer1.Enabled = false;
        }
        #endregion

        #region 工具栏单击事件

        private void Tools16MouseClick(object sender, EventArgs e)
        {
            int index =(int) ((DuiBaseControl) sender).Tag;
            string name = "";
            switch (index)
            {
                case 0:
                    name = "微云";
                    break;
                case 1:
                    name = "WebQQ";
                    break;
                case 2:
                    name = "宠物";
                    break;
                case 3:
                    name = "QQ音乐";
                    break;
                case 4:
                    name = "QQ游戏";
                    break;
                case 5:
                    name = "QQ充值";
                    break;
            }
            MessageBox.Show(string.Format("点击了:{0}", name));
        }
        private void Tools24MouseClick(object sender, EventArgs e)
        {

            int index = (int)((DuiBaseControl)sender).Tag;
            if (index == 0)
            {
                #region 弹出菜单栏
                int left = ((DuiBaseControl) sender).LocationToScreen.X;
                int top = ((DuiBaseControl) sender).LocationToScreen.Y;
                //窗体的TopLeft值
                int UserTop = top;
                //int UserLeft = this.Left - 240 - 2;
                int UserLeft = left;
                //屏幕不包括任务栏的高度
                int PH = Screen.GetWorkingArea(this).Height;
                //判断是否超过屏幕高度
                if (UserTop < 0)
                {
                    UserTop = 0;
                }

                int PW = Screen.GetWorkingArea(this).Width;
                //判断是否大于屏幕右边
                if (UserLeft   260 > PW)
                {
                    UserLeft = PW - 160;
                }
                //窗体不为空传值
                if (QFrmMainMenu != null)
                {
                    QFrmMainMenu.Location = new Point(left - 5, UserTop - 343);
                }
                else
                {
                    QFrmMainMenu = new FrmMainMenu();
                    QFrmMainMenu.Location = new Point(left - 5, UserTop - 343);
                }
                QFrmMainMenu.Show();
                #endregion
            } 
            else if (index == 1)
            {
                #region 设置窗体

                if (QFrmSetting == null)
                {
                    QFrmSetting=new FrmSetting();
                }
                else
                {
                    if (QFrmSetting.IsDisposed)
                    {
                        QFrmSetting=new FrmSetting();
                    }
                }
                QFrmSetting.Show();

                #endregion
            }
        }
        #endregion

        #region DuiBaseControl高亮显示和隐藏事件
        /// <summary>
        /// 鼠标离开控件时不显示边框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HightMouseLeave(object sender, EventArgs e)
        {
            ((DuiBaseControl)sender).Borders.TopColor =
                ((DuiBaseControl)sender).Borders.BottomColor =
                    ((DuiBaseControl)sender).Borders.LeftColor =
                        ((DuiBaseControl)sender).Borders.RightColor = Color.Transparent;
        }
        /// <summary>
        ///  鼠标进入控件时高亮显示边框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HightMouseEnter(object sender, EventArgs e)
        {

            ((DuiBaseControl)sender).Borders.TopColor =
                ((DuiBaseControl)sender).Borders.BottomColor =
                    ((DuiBaseControl)sender).Borders.LeftColor =
                        ((DuiBaseControl)sender).Borders.RightColor = Color.FromArgb(40, Color.Black);
        }
        #endregion
        #endregion
    }
}

标签: QQ 2 1 0

实例下载地址

C# 仿QQ2014 界面皮肤 示例源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警