1. 程式人生 > >拖拽窗體的實現

拖拽窗體的實現

sys system int als sep use void sem sender

之前做的項目,趁機總結一下新學到的技能

C#拖拽窗體的實現

首先設置FormBorderStyle為none,設置topmost為true(顯示為最頂層窗體)。接下來,主要是三個鼠標事件的處理,以下,具體說明如何實現。

局部成員聲明。

private Point ptMouseCurrrnetPos, ptMouseNewPos,ptFormPos, ptFormNewPos;

private bool blnMouseDown=false;

主要的三個鼠標事件,即MouseDown、 MouseMove、 MouseUp三個事件。

private void frmTopMost_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)

{

if( blnMouseDown )

{

//Get the current position of the mouse in the screen

ptMouseNewPos = Control.MousePosition;

//Set window position

ptFormNewPos.X = ptMouseNewPos.X - ptMouseCurrrnetPos.X + ptFormPos.X;

ptFormNewPos.Y = ptMouseNewPos.Y - ptMouseCurrrnetPos.Y + ptFormPos.Y;

//Save window position

Location = ptFormNewPos;

ptFormPos = ptFormNewPos;

//Save mouse position

ptMouseCurrrnetPos = ptMouseNewPos;

}

}

private void frmTopMost_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)

{

if(e.Button==MouseButtons.Left)

{

blnMouseDown = true;

// Save window position and mouse position

ptMouseCurrrnetPos = Control.MousePosition;

ptFormPos = Location;

}

}

private void frmTopMost_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)

{

if( e.Button == MouseButtons.Left)

//Return back signal

blnMouseDown = false;

}

感謝沈寂的藍的博客,想要了解懸浮窗口的實現可以參考下面的鏈接。

http://blog.sina.com.cn/s/blog_6e10930d0101acv9.html

拖拽窗體的實現