zoukankan      html  css  js  c++  java
  • C#中实现拖动无边框窗体Form

     Point mouseOff;//鼠标移动位置变量
                bool leftFlag;//标签是否为左键
                private void Form1_MouseDown(object sender, MouseEventArgs e)
                {
                    if (e.Button == MouseButtons.Left)
                    {
                        mouseOff = new Point(-e.X, -e.Y); //得到变量的值
                        leftFlag = true;                  //点击左键按下时标注为true;
                    }
                }

                private void Form1_MouseMove(object sender, MouseEventArgs e)
                {
                    if (leftFlag)
                    {
                        Point mouseSet = Control.MousePosition;
                        mouseSet.Offset(mouseOff.X, mouseOff.Y);  //设置移动后的位置
                        Location = mouseSet;
                    }
                }

                private void Form1_MouseUp(object sender, MouseEventArgs e)
                {
                    if (leftFlag)
                    {
                        leftFlag = false;//释放鼠标后标注为false;
                    }
                }

    第二种方法实现

    [DllImport("user32.dll")]//*********************拖动无窗体的控件
     public static extern bool ReleaseCapture();
     [DllImport("user32.dll")]
     public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
     public const int WM_SYSCOMMAND = 0x0112;
     public const int SC_MOVE = 0xF010;
     public const int HTCAPTION = 0x0002;
     

    下面再你要拖动触发的控件里面写上这句话

    private void gPanelTitleBack_MouseDown(object sender, MouseEventArgs e)
     {
     ReleaseCapture();
     SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);//*********************调用移动无窗体控件函数
     }

  • 相关阅读:
    Oracle中的序列
    Oracle中常见表与各类结构的查询
    软件项目中的沟通 第一故事
    bat脚本 得到前一天的日期
    Windows bat脚本的for语句
    Integer与int比较
    String参数传递
    数据类型转换
    synchronized
    Java的Thread和Runnable
  • 原文地址:https://www.cnblogs.com/yuxuan/p/1846517.html
Copyright © 2011-2022 走看看