zoukankan      html  css  js  c++  java
  • 窗口拖动功能,以及拖动时卡的解决方案

    const int WM_NCLBUTTONDOWN = 0xA1;  
    const int HT_CAPTION = 0x2;  
    [DllImport("user32.dll")]  
    static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);  
      
    private void Form2_MouseDown(object sender, MouseEventArgs e)  
    {  
        if (e.Button == MouseButtons.Left & this.WindowState == FormWindowState.Normal)  
        {  
            // 移动窗体   
            this.Capture = false;  
            SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);  
        }  
    }  
    const int WM_NCLBUTTONDOWN = 0xA1;
    const int HT_CAPTION = 0x2;
    [DllImport("user32.dll")]
    static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    
    private void Form2_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left & this.WindowState == FormWindowState.Normal)
        {
            // 移动窗体
            this.Capture = false;
            SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
        }
    }
    
    
    
     
    
    

    实验证明这个方法是比较好的,它模拟了点击窗口标题栏进行拖动的动作 

    我以前用过的方法是设置窗体的Location的方法,很卡,而且快速拖动会不同步

     
    Point m_oldpoint;  
    bool m_mouse_is_down = false;  
      
    private void pictureBox_title_MouseDown(object sender, MouseEventArgs e)  
    {  
        m_oldpoint = MousePosition;  
    }  
      
    private void pictureBox_title_MouseMove(object sender, MouseEventArgs e)  
    {  
        if ((e.Button != MouseButtons.Left) || (MousePosition == m_oldpoint))  
        {  
            return;  
        }  
        this.Location = new Point(this.Location.X + MousePosition.X - m_oldpoint.X, this.Location.Y + MousePosition.Y - m_oldpoint.Y);  
        m_oldpoint = MousePosition;  
    }  

  • 相关阅读:
    CentOS安装Docker
    Spring内异常 application exception overridden by commit exception
    SVN里恢复到某一天的版本操作
    BootStrap如何支持多模态框弹窗
    Finally使用时报"finally block does not complete normally"
    dom4j解析XML文件
    避免先查询再插入的解决方案
    List<T>转换Datable 数据
    DataTable转Json Json转DataTable
    sql 自动生成编号函数
  • 原文地址:https://www.cnblogs.com/diulela/p/2544593.html
Copyright © 2011-2022 走看看