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 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

Asp.Net4.0/VS2010新变化(6):内置的图表控件

.net4.0以前,要想在网页上画个饼图,那还真不是个轻松的活儿,得有点技术含量,比如:可以用System.Drawing下的那些东东,再或者用Silverli...

1909
来自专栏林德熙的博客

wpf 如何使用 Magick.NET 播放 gif 图片 安装 Magick.NET解析 gif播放 gif

最近在做 gif 播放,发现 gif 播放需要很多内存,于是就使用 Magick.NET 播放,但是这个方式也需要很多的内存。播放一张 uwp 萤火虫 需要 ...

632
来自专栏伪君子的梦呓

用 Markdown 排版

前言 说实在话,微信公众号自带的排版还是不能满足我的需求,这个真的没有办法,只能借助外部的东西来实现了。 好在微信公众号是支持 Markdown 排版的,所以直...

4239
来自专栏菩提树下的杨过

用Design+Blend轻松制作环形文字

先看效果图: ? 步骤: 1.先启动Microsoft Expression Design 3 a.画一个正圆,再随便打几个字,同时选中文字和圆 b.选择菜单栏...

18310
来自专栏c#开发者

DataGrid模板列中TextBox的焦点相应键盘事件

DataGrid模板列中TextBox的焦点相应键盘事件      首先在DataGrid中加入模板列:      < asp:datagrid id="da...

3508
来自专栏林德熙的博客

win10 uwp win2d CanvasVirtualControl CanvasAnimatedControlCanvasVirtualControl其他博客

本文来告诉大家 CanvasVirtualControl ,在什么时候使用这个控件。

1281
来自专栏我和未来有约会

Silverlight性能优化

Silverlight性能优化 性能优化 监视性能(FPS) Silverlight的呈现性能会因指定的宿主参数和内容的复杂程度而异。 为了监视FPS的值我们...

1857
来自专栏Django Scrapy

win10快捷键大全 win10常用快捷键

win10快捷键大全大家可以来了解一下,今天小编带来了win10常用快捷键,很多朋友喜欢使用快捷键来操作电脑,那么Windows10系统有哪些新的快捷键呢 w...

4177
来自专栏DeveWork

自定义(修改)WordPress管理后台界面的字体样式

默认的话,WordPress 后台管理界面的字体样式是“sans-serif”,中文的话直接是宋体了(当然,在Windows的机子上是这样,苹果机可能不同)。不...

2567
来自专栏hbbliyong

win8快捷键大全分享,非常全

Windows 8全新的Metro操作体验,对于没有平板只能用快捷键来提高效率了。全面的Windows 8快捷键,请下载微软官方的Windows 8快捷键表格,...

2774

扫码关注云+社区