2025年3月18日 星期二 甲辰(龙)年 月十七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > .net

代码库の自动粘合桌面边缘

时间:02-11来源:作者:点击数:29

代码库の自动粘合桌面边缘

  • using System.Windows.Forms;
  • using System;
  • namespace **
  • {
  • public partial class ***: form
  • {
  • /* 【必要事件】:
  • * No.1:窗体的 Move 事件。
  • * No.2:窗体的 MouseEnter事件。
  • * No.3:MouseLeave事件。在窗体的“deactivated”事件 + 窗体中[所有的控件]leave的事件中都加入该事件。
  • * 将“**”更改为最终要使用的窗体的namespace。
  • */
  • int intBianYuanXiangSu = 7; //边缘像素。即当窗体缩回去的时候,露出来多少像素,来提示窗体位置。
  • /// <summary>
  • /// 自动粘合桌面边缘。
  • /// </summary>
  • /// <param name="intJingDu">自动粘合的精度,默认10像素。</param>
  • /// <param name="LeftRight">是否启动在接近桌面左右边缘时也自动粘合。</param>
  • private void myMethod_AutoAbsorb(int intJingDu , bool LeftAndRight)
  • {
  • //小于10像素.则使用默认10像素。
  • if ( intJingDu <= 10 )
  • intJingDu = 10;
  • //只有在窗体!不在!桌面的边缘的时候,才开始判断是否开始吸附。
  • if ( Left != SystemInformation.WorkingArea.Width - this.Size.Width && Left != 0 && Top != 0 )
  • {
  • //当窗体靠近桌面"上方"的时候,开始粘合。
  • if ( Location.Y <= intJingDu && Location.Y > -this.Size.Height + intBianYuanXiangSu )
  • Top = 0;
  • if ( LeftAndRight == true )
  • {
  • //当窗体靠近桌面的"左边缘"时候,开始粘合。
  • if ( this.Location.X <= intJingDu && Location.X > -Size.Width + intBianYuanXiangSu )
  • Left = 0;
  • //当窗体靠近桌面“右边缘”的时候,开始粘合。WorkingArea获得桌面的尺寸的属性。
  • if ( Location.X >= ( SystemInformation.WorkingArea.Width - this.Size.Width - intJingDu )
  • && Left < SystemInformation.WorkingArea.Width - intBianYuanXiangSu )
  • Left = SystemInformation.WorkingArea.Width - Size.Width;
  • }
  • }
  • }
  • private void myMethod_AutoAbsorb_MouseEnter()
  • {
  • if ( Top == -this.Size.Height + intBianYuanXiangSu ) //上边缘
  • this.Top = 0;
  • if ( Left == -this.Size.Width + intBianYuanXiangSu ) //左边缘
  • this.Left = 0;
  • if ( Left == SystemInformation.WorkingArea.Width - intBianYuanXiangSu ) //右边缘
  • this.Left = SystemInformation.WorkingArea.Width - this.Size.Width;
  • }
  • //在窗体的deactivated事件 + 窗体中所有的控leave件的事件中都加入以下事件。这样勉强达到效果。
  • private void myMethod_AutoAbsorb_MouseLeave()
  • {
  • //只有鼠标不在窗体的内部范围的时候,才开始缩回去。
  • if ( !( ( Control.MousePosition.X >= Left && Control.MousePosition.X <= Left + Width ) &&
  • ( Control.MousePosition.Y >= Top && Control.MousePosition.Y <= Top + Height ) ) )
  • {
  • if ( Top == 0 ) //上边缘
  • Top = -Size.Height + intBianYuanXiangSu;
  • if ( Left == 0 ) //左边缘
  • Left = -Size.Width + intBianYuanXiangSu;
  • if ( Left == SystemInformation.WorkingArea.Width - Size.Width ) //右边缘
  • Left = SystemInformation.WorkingArea.Width - intBianYuanXiangSu;
  • }
  • }
  • }
  • }

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门