窗体在屏幕边缘隐藏
2021-07-10 14:07
标签:rsh 最小化 ima show tar ret obj send max 窗体在屏幕边缘隐藏 标签:rsh 最小化 ima show tar ret obj send max 原文地址:https://www.cnblogs.com/skyhorseyk/p/9680930.html 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 this.Width)
{
this.Top = sideThickness - this.Height;
}
}
}