拖拽窗體的實現
之前做的項目,趁機總結一下新學到的技能
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
拖拽窗體的實現