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();
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

web前端基础知识总结

上个寒假总结的web前端的一些知识点给大家分享一下 1、<html>和</html> 标签限定了文档的开始和结束点。 属性: (1)  dir: 文本的显示方向...

1825
来自专栏九彩拼盘的叨叨叨

初级 Web 前端核心技能点

703
来自专栏每日一篇技术文章

weex-09-组件text的用法

1.怎么给text 组件赋值 2.怎么设置组件的背景颜色和字体颜色 3.怎么给设置组建的边框颜色,宽度,样式 4.怎么设置文字斜体 加粗 下划线等 5....

942
来自专栏HTML5学堂

你们等了很久的弹性布局(flex),还不快来~!

传统的布局方案中,我们基本都是在基于盒模型,依赖dispaly(显示)、position(定位)以及float(浮动)等属性来操作。但是这些操作需要用到一些特殊...

3315
来自专栏desperate633

浅谈JavaScript如何操作html DOMJavaScript 能够改变页面中的所有 HTML 元素改变 HTML 样式** JavaScript 有能力对 HTML 事件做出反应**添加和删除

** 通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。**

551
来自专栏用户画像

导航页下拉菜单

1、static :默认值 没有定位 元素出现在正常的流中(忽略top,bottom,left,right或者z-index声明)。

822
来自专栏青玉伏案

Web前端上万字的知识总结

下面是自己学HTML+DIV+CSS+JS时的学习笔记,给大家分享以下,相互学习。大二时候寒假在家无聊的时候想做点事,总结了一下web前端基础的东西,下面的每...

18910
来自专栏前端萌媛的成长之路

position有几种,absolute和relative的区别

1232
来自专栏HTML5学堂

position:absolute 的深入探讨

今天给大家说说,position:absolute 参考谁进行定位的问题。之前大家可能会认为如果absolute元素的父级(祖父)元素没有设置position属...

2596
来自专栏青枫的专栏

day01_html学习笔记

761

扫码关注云+社区