• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > WinForm限制窗体不能移到屏幕外的方法

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

作者:我心依旧 字体:[增加 减小] 来源:互联网 时间:2017-05-28

我心依旧 通过本文主要向大家介绍了c#winform窗体美化,winform 跨窗体传值,winform窗体间传值,winform窗体固定大小,winform窗体美化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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);
  }
 }
 }
}

</div>

希望本文所述对大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Winform窗体圆角设计代码
  • C#在winform中实现数据增删改查等功能
  • Winform实现鼠标可穿透的窗体镂空效果
  • WinForm单例窗体用法实例
  • WinForm遍历窗体所有子控件的方法
  • C#使用winform简单导出Excel的方法
  • winform实现拖动文件到窗体上的方法
  • winform创建不规则窗体的方法
  • Winform窗体效果实例分析
  • WinForm实现窗体最大化并遮盖任务栏的方法

相关文章

  • 2017-05-28C#使用StreamReader读取文件的方法
  • 2017-05-28C#使用动态规划解决0-1背包问题实例分析
  • 2017-05-28C#学习基础概念二十五问续2第1/2页
  • 2017-05-28C#获取进程的主窗口句柄的实现方法
  • 2017-05-28C#实现去除Strings中空格的方法
  • 2017-05-28举例说明Java多线程编程中读写锁的使用
  • 2017-05-28基于C#的音乐播放器主Form实现代码
  • 2017-05-28C#.NET实现网页自动登录的方法
  • 2017-05-28C#中Linq查询基本操作使用实例
  • 2017-05-28详解C#编程中.NET的弱事件模式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c#打印预览控件中实现用鼠标移动页面功能代码分享
    • C# Lambda 知识回顾
    • C#中文随机数实现方法
    • C# 类的声明详解
    • C# TreeView读取数据库简单实例
    • C#探秘系列(二)——IsXXX 系列方法
    • C#使用for循环移除HTML标记
    • C#实现的调用DOS命令操作类实例
    • C# 中的动态创建组件(属性及事件)的实现思路及方法
    • winform C#获得Mac地址,IP地址,子网掩码,默认网关的实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有