窗体在屏幕边缘隐藏

Posted skyhorseyk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了窗体在屏幕边缘隐藏相关的知识,希望对你有一定的参考价值。

  private void timer2_Tick(object sender, EventArgs e)
        {
            timer1.Interval = 200;
            AutoSideHideOrShow();
        }

        void AutoSideHideOrShow()
        {
            int sideThickness = 4;//边缘的厚度,窗体停靠在边缘隐藏后留出来的可见部分的厚度

            //如果窗体最小化或最大化了则什么也不做
            if (this.WindowState == FormWindowState.Minimized || this.WindowState == FormWindowState.Maximized)
            {
                return;
            }

            //如果鼠标在窗体内
            if (Cursor.Position.X >= this.Left && Cursor.Position.X < this.Right && Cursor.Position.Y >= this.Top && Cursor.Position.Y < this.Bottom)
            {
                //如果窗体离屏幕边缘很近,则自动停靠在该边缘
                if (this.Top <= sideThickness)
                {
                    this.Top = 0;
                }
                if (this.Left <= sideThickness)
                {
                    this.Left = 0;
                }
                if (this.Left >= Screen.PrimaryScreen.WorkingArea.Width - this.Width - sideThickness)
                {
                    this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
                }
            }
            //当鼠标离开窗体以后
            else
            {
                //隐藏到屏幕左边缘
                if (this.Left == 0)
                {
                    this.Left = sideThickness - this.Width;
                }
                //隐藏到屏幕右边缘
                else if (this.Left == Screen.PrimaryScreen.WorkingArea.Width - this.Width)
                {
                    this.Left = Screen.PrimaryScreen.WorkingArea.Width - sideThickness;
                }
                //隐藏到屏幕上边缘
                else if (this.Top == 0 && this.Left > 0 && this.Left < Screen.PrimaryScreen.WorkingArea.Width - this.Width)
                {
                    this.Top = sideThickness - this.Height;
                }
            }
        }

 

以上是关于窗体在屏幕边缘隐藏的主要内容,如果未能解决你的问题,请参考以下文章

C#制作不规则窗体,如何使边缘平滑(抗锯齿)?

Android:隐藏屏幕顶部边缘的视图

ToolStrip控件左右拖拽移动效果实现

怎么使用js打开一个窗体刚好是屏幕的大小

片段设计:通过在单个 Activity 中显示/隐藏片段来适应多种屏幕布局?

c# 弹出窗,要求在指定位置弹出窗体(屏幕正中、屏幕右下角)