通过控件拖动窗体

 适用于无边框窗体,自定义标题栏

普兰店网站建设公司创新互联建站,普兰店网站设计制作,有大型网站制作公司丰富经验。已为普兰店上千多家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的普兰店做网站的公司定做!

 

之前在网上找的,如http://www.cnblogs.com/yuxuan/archive/2010/09/25/1834346.html这篇博文,开始移动时会瞬移几个像素.....

 

 

 

  1. using System; 
  2.  
  3. using System.Collections.Generic; 
  4.  
  5. using System.Text; 
  6.  
  7. using System.Windows.Forms; 
  8.  
  9. using System.Drawing; 
  10.  
  11.   
  12.  
  13. namespace EW.XIS.Common 
  14.  
  15. { 
  16.  
  17.     ///  
  18.  
  19.     /// 说明:窗体拖动类,通过这个类提供的方法实现窗体上任意控件可辅助拖动窗体 
  20.  
  21.     ///  
  22.  
  23.     public class DragFormClass 
  24.  
  25.     { 
  26.  
  27.   
  28.  
  29.         private static bool isMouseDown = false; 
  30.  
  31.         private static Point mouseOffset; 
  32.  
  33.         private static Form _form; 
  34.  
  35.         ///  
  36.  
  37.         /// 在窗体上增加拖拽事件 
  38.  
  39.         ///  
  40.  
  41.         /// 控件对象 
  42.  
  43.         public static void bindControl(Control control) 
  44.  
  45.         { 
  46.  
  47.             //如果控件为空    
  48.  
  49.             if (control == null) 
  50.  
  51.             { 
  52.  
  53.                 return; 
  54.  
  55.             } 
  56.  
  57.             _form = control.FindForm(); 
  58.  
  59.             //增加鼠标拖动窗体移动事件   
  60.  
  61.             control.MouseMove += new MouseEventHandler(control_MouseMove); 
  62.  
  63.             control.MouseDown += new MouseEventHandler(control_MouseDown); 
  64.  
  65.             control.MouseUp += new MouseEventHandler(control_MouseUp); 
  66.  
  67.         } 
  68.  
  69.   
  70.  
  71.         ///  
  72.  
  73.         /// 鼠标按下之时,保存鼠标相对于窗体的位置 
  74.  
  75.         ///  
  76.  
  77.         ///  
  78.  
  79.         ///  
  80.  
  81.         private static void control_MouseDown(object sender, MouseEventArgs e) 
  82.  
  83.         { 
  84.  
  85.             if (Control.MouseButtons == MouseButtons.Left) 
  86.  
  87.             { 
  88.  
  89.   
  90.  
  91.                 Point p=_form.PointToClient(Control.MousePosition); 
  92.  
  93.                 mouseOffset = new Point(-p.X, -p.Y); 
  94.  
  95.                 isMouseDown = true; 
  96.  
  97.             } 
  98.  
  99.         } 
  100.  
  101.         ///  
  102.  
  103.         /// 移动鼠标的时候改变窗体位置 
  104.  
  105.         ///  
  106.  
  107.         ///  
  108.  
  109.         ///  
  110.  
  111.         private static void control_MouseMove(object sender, MouseEventArgs e) 
  112.  
  113.         { 
  114.  
  115.             if (Control.MouseButtons == MouseButtons.Left) 
  116.  
  117.             { 
  118.  
  119.                 if (isMouseDown) 
  120.  
  121.                 { 
  122.  
  123.                     Point mouse = Control.MousePosition; 
  124.  
  125.                     mouse.Offset(mouseOffset.X, mouseOffset.Y); 
  126.  
  127.                     _form.Location = new Point(mouse.X, mouse.Y); 
  128.  
  129.                      
  130.  
  131.                 } 
  132.  
  133.             } 
  134.  
  135.         } 
  136.  
  137.         ///  
  138.  
  139.         /// 松开鼠标的时候,重设事件 
  140.  
  141.         ///  
  142.  
  143.         ///  
  144.  
  145.         ///  
  146.  
  147.         private static void control_MouseUp(object sender, MouseEventArgs e) 
  148.  
  149.         { 
  150.  
  151.             if (e.Button == MouseButtons.Left) 
  152.  
  153.             { 
  154.  
  155.                 isMouseDown = false; 
  156.  
  157.             } 
  158.  
  159.         } 
  160.  
  161.   
  162.  
  163.     } 
  164.  
  165. } 
  166.  
  167.   

 


分享标题:通过控件拖动窗体
标题路径:http://jxruijie.cn/article/gpehpe.html