zoukankan      html  css  js  c++  java
  • wpf、winform仿QQ靠边隐藏

    先说下下面的代码和demo是wpf的,如果winform要用,改动不大的。

    实现思路: 通过定时刷新鼠标位置 和 窗体坐标 进行计算 来控制窗体的隐藏 显示 

    代码都有详细的注释

    //窗体状态 true为显示 false为隐藏
            private bool IsHide = false;
            //鼠标状态 true为进入窗体 false为离开窗体
            private bool IsMouseEnter = false;
            //计时器 通过win32api实时获取鼠标位置
            private Timer timer;
    
            public MainWindow()
            {
                InitializeComponent();
                timer = new Timer();
                timer.Interval = 300;
                timer.Tick += new EventHandler(timer_Tick);
                
            }
    
            void timer_Tick(object sender, EventArgs e)
            {
                MousePosition.CurrentPoint point;
                MousePosition.MouseMove(out point);
               //判断鼠标是否进入窗体
                if (point.X >= this.Left && point.X <= this.Left + this.Width&&point.Y>=this.Top&&point.Y<=this.Top+this.Height)
                {
                    //鼠标在窗体内部
                    IsMouseEnter = true;
                }
                else
                {
                    //鼠标离开窗体
                    IsMouseEnter = false;
                }
    
                //判断窗体是否在隐藏状态
                if (IsHide)
                {
                    //如果在隐藏状态 且 横坐标在窗体横坐标方位 纵坐标小于等于20 则显示窗体 并把窗体状态设置为显示
                    if (point.X >= this.Left && point.X <= this.Left + this.Width)
                    {
                        if (point.Y <= 20)
                        {
                            this.Top = 0;//显示窗体
                            IsHide = false;//把窗体状态设置为显示
                        }
                    }
                }
                else
                {
                    //如果在显示状态 且纵坐标小于等于20 切鼠标不在窗体内 则隐藏窗体
    
                    if (this.Top <= 20 && !IsMouseEnter)
                    {
                        this.Top = 0 - this.Width;//隐藏窗体
                        IsHide = true;
                    }
                }
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                timer.Start();
            }
  • 相关阅读:
    luogu4345 [SHOI2015]超能粒子炮·改(组合数/Lucas定理)
    关于 centos 7系统,iptables透明网桥实现
    C 语言实现字符串替换
    linux 程序调用system执行命令
    linux C/C++ 日志打印函数
    关于socket编程获取客户端地址笔记
    C# treeview 使用笔记
    SIP DB33标准笔记 监控图像获取
    SIP DB33标准笔记 注册/目录发送/心跳
    contos 7/redhat 7 安装mysql
  • 原文地址:https://www.cnblogs.com/stulzq/p/5455166.html
Copyright © 2011-2022 走看看