C#之移动无标题栏窗体功能的实现!...


为实现移动无标题栏窗体的功能,我从网上寻找、整理了以下资料,以备不时之需: 该方法适用于有标题栏和无标题栏窗体,适用于窗体内控件,当然 Form 也不例外, 只须添加 MouseDown、MouseMove 事件,无需添加 MouseUp 事件, 也无需考虑 Form 是否有标题栏。 本方法采用 Control.MousePosition,而没有采用 MouseEventArgs e 获取数据, 是因为这样无需考虑窗体有无标题栏和边框的大小, 也无需考虑是窗体引发事件,还是窗体内控件引发事件。 主要代码如下: [csharp] view plaincopyprint?
public partial class Form1 : Form
{ // 窗体的屏幕坐标
Point formPoint; // 鼠标光标的屏幕坐标
Point mousePoint; public Form1()
{
InitializeComponent();
} //退出程序
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
} //恢复标题栏
private void btn_RecoverCaption_Click(object sender, EventArgs e)
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
} //去年标题栏
private void btn_NoCaption_Click(object sender, EventArgs e)
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
} //鼠标在窗体按下时...
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
// 获取窗体的屏幕坐标(x,y)
formPoint = this.Location; // 获取鼠标光标的位置(屏幕坐标)
mousePoint = Control.MousePosition; } //鼠标在窗体移动时...
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
//获取鼠标移动时的屏幕坐标
Point mousePos = Control.MousePosition; //改变窗体位置
this.Location = new Point(formPoint.X+mousePos.X - mousePoint.X,
formPoint.Y+mousePos.Y - mousePoint.Y);
}
}
}
C#之移动无标题栏窗体功能的实现!...的更多相关文章
- C# 移动无标题栏窗体的几种方法
第一种,手工移动. 该方法根据鼠标位置实现窗体的移动.网上有很多相关的例子,这里不再多讲. 第二种,调用系统API原理:是当鼠标左键按下时,让系统认为是在标题栏按下的.这里我们用到了winapi里的W ...
- C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
对于无标题栏窗体,也就是FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还 ...
- 4种方法实现C#无标题栏窗体的移动
首先C#无标题栏窗体的实现代码 在load时实现 无工具栏+无窗口标题 private void Form1_Load(object sender, EventArgs e) { this.Contr ...
- C#移动无标题栏窗体的四种代码
第一种采用,需注意窗体上的控件是否把窗体覆盖了...MouseDown.MouseMove.MouseUp事件应该是鼠标所处位置最顶层的控件的事件在窗体的类中声明两个变量private Point m ...
- C# 实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
/// <summary> /// 实现窗体的最小化 /// </summary> protected override CreateParams CreateParams { ...
- C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- C#WinForm无边框窗体移动----模仿鼠标单击标题栏移动窗体位置
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- Winform自定义无边框窗体
目的: 1.将窗体设置成无边框,如下面效果图 2.该无边框窗体添加了窗体放大.缩小(可以根据需要只能横向放大缩小 或者 竖向放大缩小)的功能 Point vPoint = new Point((i ...
- 轻轻的我走了,正如我轻轻的来——Duilib无焦点窗体的实现
在Windows编程中,我们已经习惯了一个窗体从创建到显示并获得焦点. 我们总感觉一个窗体创建出来获得焦点是理所理所当然的.一个窗体仅仅要显示就必须获得焦点.一个新窗体显示时.会收到到WM_SETFO ...
随机推荐
- iOS设备保持横排方向
//保持横排方向 -(NSUInteger)supportedInterfaceOrientations{ returnUIInterfaceOrientationMaskLandscapeL ...
- CPP数组
数组为函数参数,求出一组数中的最大者;
- 定制Centos系统(基于6.x)
1.条件准备: 按照需求,最小化安装Centos原生系统 在安装后的系统中找到/root/install.log与/root/anaconda-ks.cfg文件 ...
- jsp的include两种使用方法区别
指令include是将被包含页面中的代码复制粘贴到主页面中,最后编译形成主页面的类文件(一个). 指令include中file属性的值必须是项目中已存在的文件,否则主页面报异常. 指令include如 ...
- cocos2d与cocos2d-X中的draw和update
像其它的游戏引擎一样,我们有两个不同的方法来完成draw和update. 1: Draw:每一个CCNode都有一个draw方法,每一帧都会调用.我们只在这个方法里做描绘的事情. 2: Update: ...
- winform设置DataGridView样式 (蓝色)
本文转载:http://www.cnblogs.com/hailexuexi/archive/2012/04/23/2466398.html 代码: #region DataGridVeiw Styl ...
- 【课程分享】Oracle数据库系统project师
对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 一.本课程是怎么样的一门课程 1.1.课程的背景 该课程是Oracle数据库系统project师培训课程 Oracle Databas ...
- poj 2240 Arbitrage (Floyd)
链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...
- 规范javascript书写
空白 缩进 换行限制 if while for do 2. 命名 常量 URL_CONFIG 变量 listLen 函数命名 调用函数 function setStyle(dom, name, v ...
- 样式单位之px、em、rem
最近在看bootstrap.css的时候看到很多单位都用到rem而不是熟系的px.经学习得知: 1.px精确的单位: 2.em为相对单位(相对父级元素) 3.rem为相对单位(相对根元素 html)