4种方法实现C#无标题栏窗体的移动
首先C#无标题栏窗体的实现代码
在load时实现
无工具栏+无窗口标题
private void Form1_Load(object sender, EventArgs e)
{
this.ControlBox = false;
this.Text = "";
}
这样就可以实现无标题栏窗体了,示例效果

第一种实现点击窗口内区域移动窗体的方法
重写wndproc,截取在窗体区域内移动的消息,
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
)
{
m.Result = );
}
}
第二种实现方法
private void Form1_Load(object sender, EventArgs e)
{
this.MouseMove+=Form1_MouseMove;
}
[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll", EntryPoint = "ReleaseCapture")]
public static extern int ReleaseCapture();
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
ReleaseCapture();//使鼠标事件对当前窗体持续有效
SendMessage();
}
第三种
截取鼠标在窗体内按下左键时的消息,改为鼠标在标题栏下按下左击的事件实现移动
protected override void WndProc(ref Message m)
{
if(m.Msg==0x201)
{
m.Msg = 0xA1;
m.WParam = );
}
base.WndProc(ref m);
}
第四种最原始的方法
mousedown事件是改变一个bool变量
mousemove时先判断bool变量,移动时设置窗体的location
mouseup时改变bool变量
bool mouse_down = false;//鼠标左键是否被按下
Point mouse_start_point;//记录按下左键时的鼠标位置
Point form_start_point;//记录按下左键时窗口位置
private void Form1_Load(object sender, EventArgs e)
{
this.ControlBox = false;
this.Text = "";
this.MouseMove+=Form1_MouseMove;
this.MouseUp+=Form1_MouseUp;
this.MouseDown+=Form1_MouseDown;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.mouse_down = true;
this.mouse_start_point = Control.MousePosition;
this.form_start_point = this.Location;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
this.mouse_down = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if(this.mouse_down==true)
{
this.Location = new Point(this.form_start_point.X + PointToScreen(e.Location).X - this.mouse_start_point.X, this.form_start_point.Y + PointToScreen(e.Location).Y - this.mouse_start_point.Y);
}
}
}
示例代码
http://pan.baidu.com/s/1hq0KTMG
4种方法实现C#无标题栏窗体的移动的更多相关文章
- C# 移动无标题栏窗体的几种方法
第一种,手工移动. 该方法根据鼠标位置实现窗体的移动.网上有很多相关的例子,这里不再多讲. 第二种,调用系统API原理:是当鼠标左键按下时,让系统认为是在标题栏按下的.这里我们用到了winapi里的W ...
- C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
对于无标题栏窗体,也就是FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还 ...
- C#之移动无标题栏窗体功能的实现!...
为实现移动无标题栏窗体的功能,我从网上寻找.整理了以下资料,以备不时之需: 该方法适用于有标题栏和无标题栏窗体,适用于窗体内控件,当然 Form 也不例外, 只须添加 MouseDown.MouseM ...
- C#移动无标题栏窗体的四种代码
第一种采用,需注意窗体上的控件是否把窗体覆盖了...MouseDown.MouseMove.MouseUp事件应该是鼠标所处位置最顶层的控件的事件在窗体的类中声明两个变量private Point m ...
- C# 实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
/// <summary> /// 实现窗体的最小化 /// </summary> protected override CreateParams CreateParams { ...
- 两种方法:VS2008下C++窗体程序显示控制台的方法——在QT程序中使用cout和cin
老蔡写了一个基于QT的窗体程序,而过去写的类的调试信息都是用cout显示的,苦于窗体程序无法显示cout信息很多信息都看不到,于是就想到让控制台和窗体同时显示.显示控制台方法如下 1.项目(或者叫“工 ...
- 区间求mex的两种方法
区间求mex的两种方法 1.莫队+分块/莫队+二分+树状数组 2.线段树 预处理1-i的sg值(用一个vis数组,一个cur指针) 预处理nxt数组(a[nxt[i]]=a[i]) 枚举左端点l, 考 ...
- 区间求mex的几种方法
Tags : 总结 莫队 线段树 区间取mex的几种方法 题目大意 无修改,求区间 \(mex\) 做法1 莫队+二分+树状数组 树状数组维护维护桶,每次扫完二分答案,用树状数组判断 \(O(n\sq ...
- C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
随机推荐
- 局部描述符表LDT的作用+定义+初始化+跳转相关
[0]写在前面 0.1)本代码的作用: 旨在说明局部描述符表的作用,及其相关定义,初始化和跳转等内容: 0.2)文末的个人总结是干货,前面代码仅供参考的,且source code from orang ...
- js闭包实际用途
闭包例:防止双击 在线商店的购物车里,为防止“多重购买”,需要防止按钮被双击. 下面用“jQuery + 闭包”来实现这一功能. HTML <form name="frm" ...
- 原型模式 private static Map<String,Prototype> map = new HashMap<String,Prototype>();
public class PrototypeManager { /** * 用来记录原型的编号和原型实例的对应关系 */ private static Map<String,Prototype& ...
- 九度OJ 1158:买房子 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1801 解决:1096 题目描述: 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每 ...
- CSS浏览器兼容性问题解决方法总结
CSS浏览器兼容解决总结如下: 1. CSS中几种浏览器对不同关键字的支持,可进行浏览器兼容性重复定义 !important 可被FireFox和IE7识别 * 可被IE6.IE7识别 _ 可被IE6 ...
- synchronized同步关键字
参考:http://blog.csdn.net/luoweifu/article/details/46613015 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: ...
- JavaScript判断图片是否加载完成的三种方式 (转)
一.load事件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE HTML> <html> <head> ...
- 详解单页面路由的几种实现原理(附demo)
前言 路由是每个单页面网站必须要有的,所以,理解一下原理,我觉得还是比较重要的. 本篇,基本不会贴代码,只讲原理,代码在页底会有githup地址,主意,一定要放在服务本地服务器里跑(因为有ajax), ...
- 使用expect实现shell自动交互
expect 是一个自动交互功能的工具.expect 是开了一个子进程,通过 spawn 来执行 shell 脚本,监测到脚本的返回结果,通过 expect 判断要进行的交互输入内容. expect ...
- 20145239 杜文超《Java程序设计》课程总结
<每周读书笔记链接汇总> 第一周读书笔记:http://www.cnblogs.com/dwc929210354/p/5247666.html 第二周读书笔记:http://www.cnb ...