无边框 winForm 窗体的鼠标拖动

为了美观,去掉窗体的标题栏,给窗体的FormBorderStyle属性设置为None,这时,使用鼠标拖动和缩放窗口就会失效。下面几种简单方法来恢复所需效果。

鼠标的拖动

  • 注册 窗体的MouseDownMouseMove事件,通过设置窗体的Location来实现移动。(较简单,不需要添加其他元素)
public partial class FmMain : Form {
        private Point formPoint = new Point();

        public FmMain() {
            InitializeComponent();
        }

        private void FmMain_MouseMove(object sender, MouseEventArgs e) {
            if (e.Button == MouseButtons.Left) {
                Point myPosittion = MousePosition;
                myPosittion.Offset(-formPoint.X, -formPoint.Y);
                Location = myPosittion;
            }
        }

        private void FmMain_MouseDown(object sender, MouseEventArgs e) {
            formPoint.X = e.X;
            formPoint.Y = e.Y;
        }
}
  • 设置一个透明的 panel 置于底层,通过设置 panel 的MouseDownMouseMove事件,来实现窗体的拖动。(多添加了一个元素,实现方式和第一种差不多)
public partial class FmMain : Form {
        private Point mousePoint = new Point();

        public FmMain() {
            InitializeComponent();
        }

        private void panelMain_MouseDown(object sender, MouseEventArgs e) {
            base.OnMouseDown(e);
            this.mousePoint.X = e.X;
            this.mousePoint.Y = e.Y;
        }

        private void panelMain_MouseMove(object sender, MouseEventArgs e) {
            base.OnMouseMove(e);
            if (e.Button == MouseButtons.Left) {
                this.Top = Control.MousePosition.Y - mousePoint.Y;
                this.Left = Control.MousePosition.X - mousePoint.X;
            }
        }
 }

网上还有其他方法,相比较这两种稍微有点复杂。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 ...
    Moment__格调阅读 4,615评论 0 11
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,392评论 0 8
  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 1,653评论 2 10
  • 第1章 鼠标事件 1-1 jQuery鼠标事件之click与dbclick事件 用交互操作中,最简单直接的操作就是...
    mo默22阅读 1,311评论 0 6
  • 今天休息2人,上班4人。 晨会内容:1、熟悉行为规范十则。 2、 让李欣读了:对待工作态度的文章分享。 3、...
    思念的诗阅读 157评论 0 0