国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

WinForm限制窗體不能移到屏幕外的方法

2020-01-24 01:31:27
字體:
來源:轉載
供稿:網友

本文實例講述了WinForm限制窗體不能移到屏幕外的方法。分享給大家供大家參考。具體實現方法如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing;using System.Runtime.InteropServices;namespace AppForm{ /// <summary> /// WinForm限制窗體不能移到屏幕外 /// </summary> public class FrmBase : Form { private Point _mouseDownPos; private bool _move; protected override void WndProc(ref Message m) {  RECT nativeRect;  switch (m.Msg)  {  case 0x20:   int lp = m.LParam.ToInt32();   if ((lp & 0xFFFF) == 2 &&   ((lp >> 0x10) & 0xFFFF) == 0x201)   {   _mouseDownPos = Control.MousePosition;   _move = true;   }   break;  case 0x231:   if (_move)   {   Rectangle rect = Screen.GetWorkingArea(this);   nativeRect = new RECT(    _mouseDownPos.X - Location.X,    _mouseDownPos.Y - Location.Y,    rect.Right - (Bounds.Right - _mouseDownPos.X),    rect.Bottom - (Bounds.Bottom - _mouseDownPos.Y));   ClipCursor(ref nativeRect);   }   break;  case 0x0232:   if (_move)   {   nativeRect = new RECT(Screen.GetWorkingArea(this));   ClipCursor(ref nativeRect);   _move = false;   }   break;  }  base.WndProc(ref m); } [DllImport("user32.dll")] public static extern bool ClipCursor(ref RECT lpRect); [StructLayout(LayoutKind.Sequential)] public struct RECT {  public int Left;  public int Top;  public int Right;  public int Bottom;  public RECT(int left, int top, int right, int bottom)  {  Left = left;  Top = top;  Right = right;  Bottom = bottom;  }  public RECT(Rectangle rect)  {  Left = rect.Left;  Top = rect.Top;  Right = rect.Right;  Bottom = rect.Bottom;  }  public Rectangle Rect  {  get  {   return new Rectangle(   Left,   Top,   Right - Left,   Bottom - Top);  }  }  public Size Size  {  get  {   return new Size(Right - Left, Bottom - Top);  }  }  public static RECT FromXYWH(int x, int y, int width, int height)  {  return new RECT(x,    y,    x + width,    y + height);  }  public static RECT FromRectangle(Rectangle rect)  {  return new RECT(rect.Left,     rect.Top,     rect.Right,     rect.Bottom);  } } }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜新市| 澄迈县| 芦山县| 古田县| 东至县| 苍梧县| 靖安县| 东台市| 辽源市| 柘城县| 封开县| 武乡县| 桃园市| 湖南省| 德江县| 原平市| 比如县| 博乐市| 静安区| 淮滨县| 屯留县| 图木舒克市| 华阴市| 乌兰浩特市| 清苑县| 翁源县| 汝城县| 沁水县| 曲麻莱县| 贵州省| 安丘市| 河间市| 桦川县| 榕江县| 贵州省| 绥阳县| 东丽区| 霸州市| 南宁市| 吴川市| 镇安县|