Windows Form Tips: 无边框窗口实现用鼠标拖拽的功能
2014-01-12 23:58
323 查看
有时候,为了达到一些特定的UI效果,我们可能会将一个Windows Form设定为无边框的形式(FormBorderStyle设置为None),但这时,窗口也将失去正常的用鼠标拖拽的行为。但下面这个例子可以让无边框窗口的鼠标拖拽功能又恢复回来。注意这个例子只支持按住鼠标左键拖拽。
假设窗口为Form1,我们为Form1增加MouseDown的响应函数Form1_MouseDown,以及MouseMove的响应函数Form1_MouseMove。
代码如下:
然后你可以试试,这个无边框窗口是可以按住鼠标左键拖拽的。
假设窗口为Form1,我们为Form1增加MouseDown的响应函数Form1_MouseDown,以及MouseMove的响应函数Form1_MouseMove。
代码如下:
namespace Demo1 { using System.Drawing; using System.Windows.Forms; public partial class Form1 : Form { private Point startPoint; public Form1() { this.InitializeComponent(); } /// <summary> /// Handles the MouseDown event of the Form1 control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param> private void Form1_MouseDown(object sender, MouseEventArgs e) { startPoint = new Point( -e.X + SystemInformation.FrameBorderSize.Width, -e.Y - SystemInformation.FrameBorderSize.Height); } /// <summary> /// Handles the MouseMove event of the Form1 control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param> private void Form1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point mousePosition = Control.MousePosition; mousePosition.Offset(this.startPoint.X, this.startPoint.Y); this.Location = mousePosition; } } } }
然后你可以试试,这个无边框窗口是可以按住鼠标左键拖拽的。
相关文章推荐
- QML实现的无边框窗口的拉伸,拖拽,基本解决闪烁严重问题
- jQuery实现的简单鼠标拖拽功能
- MFC中窗口实现拖拽文件功能
- EyesBaby功能实现之窗口拖拽与缩放功能
- EyesBaby功能实现之窗口拖拽与缩放功能
- java中 实现无标题无边框的窗体能够用鼠标拖动改变窗口大小
- <Qt C++>无边框窗口实现拖拽缩放
- js实现鼠标拖拽功能基本思路
- 如何基于asp.net实现ListBox控件的鼠标拖拽功能
- jquery实现鼠标拖拽排序功能
- Unity 程序去边框并实现拖拽窗口
- c# 实现Picturebox的鼠标拖拽功能
- QT实现拖拽TabWidget选项卡形成单独的窗口,双击标题栏可还原的功能【dock功能】
- js实现鼠标拖拽移动小窗口
- 隐藏QT窗口边框 并且在隐藏后实现窗口拖拽 同时实现透明度
- EyesBaby功能实现之窗口拖拽与缩放功能
- ExtJs 完美实现图片在Window窗口中通过鼠标滚轮放大缩小以及点击拖拽
- 如何实现鼠标拖拽窗口
- js实现模态窗口的拖拽功能
- Qt实现窗口整体拖拽功能.