C#无标题栏窗体拖动方法

在C#中,可以通过以下步骤实现无标题栏窗体拖动功能:

  1. 设置窗体的BorderStyle属性为None,这将隐藏窗体的标题栏和边框。

  2. 在窗体的MouseDown事件中,记录鼠标按下时的坐标。

  3. 在窗体的MouseMove事件中,计算鼠标移动的偏移量,并将窗体的位置设置为偏移后的位置。

以下是示例代码:

c# 复制代码
public partial class MainForm : Form
{
    private Point mouseOffset;

    public MainForm()
    {
        InitializeComponent();

        // 隐藏标题栏和边框
        this.FormBorderStyle = FormBorderStyle.None;
    }

    private void MainForm_MouseDown(object sender, MouseEventArgs e)
    {
        // 记录鼠标按下时的坐标
        mouseOffset = new Point(-e.X, -e.Y);
    }

    private void MainForm_MouseMove(object sender, MouseEventArgs e)
    {
        // 判断是否按下了鼠标左键
        if (e.Button == MouseButtons.Left)
        {
            Point mousePos = Control.MousePosition;
            mousePos.Offset(mouseOffset.X, mouseOffset.Y);

            // 将窗体的位置设置为偏移后的位置
            this.Location = mousePos;
        }
    }
}

在窗体的MouseDown事件中,记录鼠标按下时的坐标,这里使用了一个Point对象来保存坐标偏移量。在MouseMove事件中,判断是否按下了鼠标左键,如果是则计算鼠标移动的偏移量,并将窗体的位置设置为偏移后的位置。

相关推荐
老华带你飞12 小时前
旅游|基于Java旅游信息系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·旅游
爱学习的梵高先生13 小时前
C++:基础知识
开发语言·c++·算法
oioihoii13 小时前
C++对象生命周期与析构顺序深度解析
java·开发语言·c++
IMPYLH13 小时前
Lua 的 tonumber 函数
开发语言·笔记·后端·junit·游戏引擎·lua
It's now13 小时前
BeanRegistrar 的企业级应用场景及最佳实践
java·开发语言·spring
毕设源码-赖学姐13 小时前
【开题答辩全过程】以 基于Java的小区物业管理系统APP的设计与实现为例,包含答辩的问题和答案
java·开发语言
繁华似锦respect13 小时前
C++ & Linux 中 GDB 调试与内存泄漏检测详解
linux·c语言·开发语言·c++·windows·算法
小徐敲java14 小时前
python的FastAPI框架
开发语言·python·fastapi
lsx20240614 小时前
CSS3 分页设计指南
开发语言
CHANG_THE_WORLD14 小时前
Python 切片操作全面解析
开发语言·python