WinForm - 无边框窗体自定义移动
为了界面的好看,有时候需要将窗体FormBorderStyle属性设为None,这样就可以根据自己的喜欢来设计界面。但这样窗体无法进行移动的。而且默认的窗体(FormBorderStyle=Sizable)只有点击窗体边框才能移动,点击内容界面也是无法移动。根据网友们的介绍和总结,有两种比较简单的实现方法。
方法一:通过记录窗体的位置,然后利用MouseDown、MouseUp、MouseMove这三个事件实现窗体的移动。
bool isMouseDown = false;
Point currentFormLocation = new Point(); //当前窗体位置
Point currentMouseOffset = new Point(); //当前鼠标的按下位置
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
currentFormLocation = this.Location;
currentMouseOffset = Control.MousePosition;
}
} private void Form1_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false;
} private void Form1_MouseMove(object sender, MouseEventArgs e)
{
int rangeX = , rangeY = ; //计算当前鼠标光标的位移,让窗体进行相同大小的位移
if (isMouseDown)
{
Point pt = Control.MousePosition;
rangeX = currentMouseOffset.X - pt.X;
rangeY = currentMouseOffset.Y - pt.Y;
this.Location = new Point(currentFormLocation.X - rangeX, currentFormLocation.Y - rangeY);
}
}
第二种方法:利用windows的消息机制来实现(转自:http://www.cnblogs.com/techmango/archive/2012/03/31/2427523.html)
//首先﹐.定义鼠標左鍵按下時的Message标识﹔其次﹐在Form1_MouseDown方法﹐讓操作系統誤以為是按下标题栏。
//1.定义鼠標左鍵按下時的Message标识
private const int WM_NCLBUTTONDOWN = 0XA1; //.定义鼠標左鍵按下
private const int HTCAPTION = ; //2.讓操作系統誤以為是按下标题栏
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
//為當前的應用程序釋放鼠標鋪獲
ReleaseCapture();
//發送消息﹐讓系統誤以為在标题栏上按下鼠標
SendMessage((int)this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, );
} //3.申明程序中所Windows的API函數
[DllImport("user32.dll",EntryPoint="SendMessageA")]
private static extern int SendMessage(int hwnd, int wMsg, int wParam, int lParam); [DllImport("user32.dll")]
private static extern int ReleaseCapture();
WinForm - 无边框窗体自定义移动的更多相关文章
- C#自定义按钮、自定义WinForm无边框窗体、自定义MessageBox窗体
C#自定义按钮.自定义WinForm无边框窗体.自定义MessageBox窗体 C#自定义Button按钮控件 效果展示 C#自定义Winform无边框窗体 效果展示 C#自定义无边框MessageB ...
- C#自定义Winform无边框窗体
C#自定义Winform无边框窗体 在实际项目中,WinForm窗体或者控件不能满足要求,所以就需要自己设计窗体等,当然设计界面可以用的东西很多,例如WPF.或者一些第三方的库等.本例中将采用WinF ...
- C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- WinForm无边框窗体移动方法
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- C#WinForm无边框窗体移动----模仿鼠标单击标题栏移动窗体位置
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- WinForm 无边框窗体和timer控件
一.无边框窗体 1.控制按钮如何制作就是放置可以点击的控件,不局限于使用按钮或是什么别的,只要可以点击能触发点击事件就可以了 做的好看一点,就是鼠标移入,移出,按下三个事件会让按钮改变样式 如何获取图 ...
- WinForm 无边框窗体改变尺寸及移动窗体
#region 无边框窗体移动改变大小 [DllImport("user32.dll")] public static extern bool ReleaseCapture(); ...
- Winform无边框窗体(FormBorderStyle属性设为None)自定义移动
为了界面的好看,有时候需要将窗体FormBorderStyle属性设为None,这样就可以根据自己的喜欢来设计界面.但这样窗体无法进行移动的.而且默认的窗体(FormBorderStyle=Sizab ...
- Winform无边框窗体的移动和阴影
//窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport ...
随机推荐
- OVS中对于用户层和datapath层的多个通道利用epoll进行控制
这里先临时记录下代码流程,有待完好. static int construct(struct ofproto *ofproto_) { struct ofproto_dpif *ofproto = o ...
- 《JavaScript高级程序设计》笔记——第一章到第三章
2019年,新年伊始,我打算好好重读一下<JavaScript高级程序设计>这本前端必备经典书.每天半小时. 以下内容摘自<JavaScript高级程序设计> 2019-2-1 ...
- LA 3644 - X-Plosives ( 也即UVA 1160)
LA看题 请点击:传送门 UVA 上也有这题 :UVA 1160 - X-Plosives 题目大意就是如果车上存在 k 个简单化合物,正好包含 k 种元素 ,那么它们将有危险,此时你应该拒绝装车. ...
- Qt没有被正确安装,请运行make install问题的解决
在网上直接下载别人编译好的Qt库,为自己使用省了不少事.但往往也会遇到些问题,其中Qt version is not properly installed,please run make instal ...
- vue-cli 3.x 移除console总结
网上找了很多vue-cli 3.x的配置,很多已经不适用了,把采坑的经历记录下来,供参考. 一.使用 uglifyjs-webpack-plugin 插件 配置如下: // vue.config.js ...
- 黑马day18 jquery高级特性&Ajax的load方法
介绍jquery中的load方法: (1).前面没有jquery.修饰,能够判断出他是一个普通的非全局函数(也就是说是一个局部函数):$.,$().,jquery.等修饰的就是全局函数.没有这些修饰的 ...
- HDoj-1163- Digital Roots
Problem Description The digital root of a positive integer is found by summing the digits of the int ...
- Android基础新手教程——1.2 开发环境搭建
Android基础新手教程--1.2 开发环境搭建 标签: Android基础新手教程 如今主流的Android开发环境有: ①Eclipse + ADT + SDK ②Android Studio ...
- Python爬虫之路——简单的网页抓图
转载自我自己的博客:http://www.mylonly.com/archives/1401.html 用Python的urllib2库和HTMLParser库写了一个简单的抓图脚本.主要抓的是htt ...
- Your algorithm's runtime complexity must be in the order of O(log n).
Given a sorted array of integers, find the starting and ending position of a given target value. You ...