Winform 窗口拖动

把窗口边框去掉后,窗口拖动问题:

 private Point mouseOffset; //记录鼠标指针的坐标
        private bool isMouseDown = false; //记录鼠标按键是否按下 

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            int xOffset;
            int yOffset;

            if (e.Button == MouseButtons.Left)
            {
                xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
                yOffset = -e.Y - SystemInformation.CaptionHeight -
                SystemInformation.FrameBorderSize.Height;
                mouseOffset = new Point(xOffset, yOffset);
                isMouseDown = true;
            }
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                Location = mousePos;
            }
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            // 修改鼠标状态isMouseDown的值
            // 确保只有鼠标左键按下并移动时,才移动窗体
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = false;
            }
        }
时间: 2024-10-11 04:11:33

Winform 窗口拖动的相关文章

winform 可拖动无边框窗体解决办法

方法一:通过重载消息处理实现. 鼠标的拖动只对窗体本身有效,不能在窗体上的控件区域点击拖动 /// <summary> /// 通过重载消息处理实现.重写窗口过程(WndProc),处理一些非客户区消息(WM_NCxxxx), /// C#中重写窗口过程不用再调用SetWindowLong API了,直接overide一个WndProc就可以了,不用声明api函数 /// 鼠标的拖动只对窗体本身有效,不能在窗体上的控件区域点击拖动 /// </summary> /// <pa

关于无标题栏窗口拖动的问题

要使无标题栏窗口实现拖动效果,除了处理OnNCHitTest()函数外:就是在OnLButtonDown()函数中发送虚假消息了. 但是,这儿得注意一下,在OnLButtonDown()函数中如果使用SetCapture()函数后再::SendMessage(m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);是不会成功的!必须去掉或在之后使用. void XWindow::OnLButtonDown(UINT nFlags, CPoint point) { XCon

Duilib改进窗口拖动,使整个窗口都能拖动(转载)

转载:http://www.cnblogs.com/XiHua/articles/3490490.html 转载:http://blog.csdn.net/lostspeed/article/details/19275249 这种方法不修改Duilib库的源码,需要的话直接在你自己的窗口类中添加两个方法实现,不需要的话,还使用原来的方法. MyWnd .h文件 1 virtual LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lPara

基于jQuery页面窗口拖动预览效果

今天给大家分享一款基于Query页面窗口拖动预览效果.这是一款基于jQuery+HTML5实现的模拟页面窗口显示拖动窗口预览特效.这款实例适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 在线预览   源码下载 实现的代码. html代码: <p> minimap - A jQuery Plugin<br> A preview of full webpage or its DOM element with flexible

Winform窗口弹出位置控制

窗体的弹出位置可以由属性StartPosition来指定,默认值有: Manural 自定义,由属性Location指定: CenterScreen 屏幕中央: WindowsDefaultBounds  系统默认位置(但大小为系统默认窗体大小) WindowsDefaultLocation 系统默认位置(大小由属性Size指定) CenterParent 父窗体中央 若自定义窗体显示位置,则属性StartPosition选择Manural,然后指定属性Location的坐标值. 指定窗体显示位

29.QT-自定义窗口拖动、自定义QToolButton/QPushButton开关按钮、界面阴影

自定义窗口及拖动 1.自定义无边框窗口时,需要将窗口标志设为: Qt::FramelessWindowHint |Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint 2.然后还需要通过安装EventFilter给自己监视窗口拖动 其中构造函数实现: myUi::myUi(QWidget *parent) : QWidget(parent) { setWindowFlags(Qt::FramelessWindowHint |Qt::Wind

winform无边框窗口拖动

无边框的窗口想拖动,只需要在置顶的容器上添加对应的mousedown 和 mousemove 事件就可以实现了.代码如下: 1 //拖动窗口 2 private Point mPoint = new Point(); 3 4 private void panel1_MouseDown(object sender, MouseEventArgs e) 5 { 6 mPoint.X = e.X; 7 mPoint.Y = e.Y; 8 } 9 10 private void panel1_Mouse

winform 窗体拖动

winform 由于自带的界面太丑,有时候就想着去掉标题栏,自己写,自己做UI 但是发现没法拖动了,或者,有时候我们也想让整个窗体都能够随着鼠标进行拖动,来来来,看下面 #region 让窗口可以随意拖动[DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage

JavaFX(三)窗口拖动

问题场景: 在上一篇中,我们将窗口的默认标题栏隐藏从而导致鼠标点击窗体无法进行拖动. 思路: 给组件添加鼠标按下事件监听器和鼠标拖动事件监听器. 实现: 代码片段: private double xOffset = 0; private double yOffset = 0; 代码片段: root.setOnMousePressed((MouseEvent event) -> { event.consume(); xOffset = event.getSceneX(); yOffset = ev