ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# 无边框窗体移动和改变大小的实现

2022-07-15 09:35:53  阅读:167  来源: 互联网

标签:const C# 边框 int 窗体 MouseDown public WMSZ


C# 无边框窗体移动和改变大小的实现 0 转载▼ 自己给软件做的皮肤,将窗体设为无边框后,想要其具有正常窗体的移动和改变大小功能,以下代            码可以实现。。。。   //需添加using System.Runtime.InteropServices; [DllImport("user32.dll")]   public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);              //常量 public const int WM_SYSCOMMAND = 0x0112;              //窗体移动 public const int SC_MOVE = 0xF010; public const int HTCAPTION = 0x0002;    //改变窗体大小 public const int WMSZ_LEFT = 0xF001; public const int WMSZ_RIGHT = 0xF002; public const int WMSZ_TOP = 0xF003; public const int WMSZ_TOPLEFT = 0xF004; public const int WMSZ_TOPRIGHT = 0xF005; public const int WMSZ_BOTTOM = 0xF006; public const int WMSZ_BOTTOMLEFT = 0xF007; public const int WMSZ_BOTTOMRIGHT = 0xF008; 声明完函数和定义完这些常量后,就是在事件里面具体的实现了。。。 //窗体移动 在要实现的控件的MouseDown事件中添加以下代码: private void panel_title_bar_MouseDown(object sender, MouseEventArgs e) {         ReleaseCapture();         SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); } //窗体大小的改变 同理在控件的MouseDown事件中添加以下代码: private void panel_bottom_MouseDown(object sender, MouseEventArgs e) {        ReleaseCapture();        SendMessage(this.Handle, WM_SYSCOMMAND, WMSZ_BOTTOM, 0); } 其中的WMSZ_BOTTOM为要改变的方向,在常量中8个方向都已经定义,其它方向换用对应常量即                  可。好了,可以试下效果,看是不是能移动和改变大小了,哈哈。。。   再加一条,就是无边框最大化后会全屏显示,只要在窗体加载中加下面这句来限制最大化窗体大小即可: this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width,                                                         Screen.PrimaryScreen.WorkingArea.Height); 同理限定最小的也可以在窗体加载中加入以下语句: this.MinimumSize = new Size(this.Width, this.Height);//窗体改变大小时最小限定在初始化大小

标签:const,C#,边框,int,窗体,MouseDown,public,WMSZ
来源: https://www.cnblogs.com/devgis/p/16480141.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有