C#WPF窗体操作类
WPF窗体屏幕边缘吸附
View Code
View Code

#region 侧吸 private new bool Hide = false; //用来表示当前隐藏状态,例如Hide=false就是不在隐藏状态 string type = ""; //用来表示窗口隐藏在哪个方向 private void SliderTimer_Tick(object sender, EventArgs e) { //this.TopMost = false; //窗体不显示在所有软件最前面 int dif = 20; Mouses.POINT mp = new Mouses.POINT();//获得当前鼠标位置 Mouses.GetCursorPos(out mp); Point pt = new Point(mp.X, mp.Y); System.Windows.Forms.Screen screen = System.Windows.Forms.Screen.PrimaryScreen; int width = screen.Bounds.Width; //获取屏幕的宽度 int height = screen.Bounds.Height; //获取屏幕的高度 if (!this.RestoreBounds.Contains(pt)) //判断鼠标是否在窗体内 { //如果不在窗体内 if (Hide == false) { if (this.Left < 10) //窗口左边碰到屏幕最左边 { this.Left = -this.Width + 3; //隐藏窗口,窗口宽度加3取反(为负数) Hide = true; type = "left"; //窗口隐藏在左边 } else if (width - this.Left - this.Width < 10)//窗口右边碰到屏幕最右边 { this.Left = width - 3; //隐藏窗口,窗口宽度加3取反(为负数) Hide = true; type = "right"; //窗口隐藏在右边 } else if (this.Top < 10) //窗口上边碰到屏幕最上边 { this.Top = -this.Height + 3; //隐藏窗口,窗口高度加3取反(为负数) Hide = true; type = "up"; //窗口隐藏在上边 } } } else { //如果在窗体内 if (this.Left > dif && type == "left") { Hide = false; } else if (width - this.Left - this.Width > dif && type == "right") { Hide = false; } else if (this.Top > dif && type == "up") { Hide = false; } //如果在窗体内且之前是隐藏状态 if (Hide == true) { this.Topmost = true; //窗体显示在所有软件最前面 if (type == "left") { this.Left = 0; Hide = false; } else if (type == "right") { this.Left = width - this.Width; Hide = false; } else if (type == "up") { this.Top = 0; Hide = false; } } } } private DispatcherTimer SlideTimer; private void EnableSlider() { this.SlideTimer = new DispatcherTimer(); this.SlideTimer.Tick += SliderTimer_Tick; this.SlideTimer.Interval = TimeSpan.FromMilliseconds(10); this.SlideTimer.Start(); this.SizeChanged += (o, e) => { if (this.WindowState == WindowState.Minimized) { this.SlideTimer.Stop(); } else if (this.WindowState == WindowState.Normal) { this.SlideTimer.Start(); } }; } #endregion
WPF中窗体移动

base.OnMouseLeftButtonDown(e); //获取鼠标相对标题栏位置 Point Pos = e.GetPosition(this); //如果鼠标位置在标题栏内 允许拖动 if (e.LeftButton == MouseButtonState.Pressed) { if (Pos.X >= 0 && Pos.X < this.ActualWidth && Pos.Y >= 0 && Pos.Y < 200) { this.DragMove(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?