當前位置:編程學習大全網 - 源碼下載 - .net中控件拖拽這樣的形式如何實現?主要涉及哪些技術?

.net中控件拖拽這樣的形式如何實現?主要涉及哪些技術?

在.net中實現拖拽控件

分類:c#技術文章

在.net中實現拖拽控件主要用到以下函數:

MouseDown(object sender, MouseEventArgs e)

MouseUp(object sender, MouseEventArgs e)

MouseMove(object sender, MouseEventArgs e)

這三個函數的作用分別是鼠標按下時激活,鼠標松開激活和鼠標移動

需要考慮的情況如下

1. 只有在鼠標按下的時候才可以使用鼠標移動事件

2. 鼠標移動的時候控件重新調整位置

為了有效控制第壹個條件,所以可以將鼠標移動事件的綁定推遲到鼠標按下事件中,而不是在初始化時完成,另外要記錄下初始狀態下鼠標位於控件中的坐標,這裏註意MouseEventArgs參數中的X,Y表示的是鼠標在當前控件中的layout坐標,而不是鼠標在主窗口中的坐標。

rivate void button1_MouseDown(object sender, MouseEventArgs e)

{

this.tmpx = e.X;

this.tmpy = e.Y;

this.button1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);

}

同時在鼠標送開事件中再將該方法綁定脫離

private void button1_MouseUp(object sender, MouseEventArgs e)

{

this.button1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);

}

最後是MouseMove事件

private void button1_MouseMove(object sender, MouseEventArgs e)

{

this.button1.Location = new System.Drawing.Point(this.button1.Location.X + e.X - this.tmpx, this.button1.Location.Y + e.Y - this.tmpy);

}

這裏重新計算了控件的新位置。

  • 上一篇:前端工作需要壹直學習嗎?
  • 下一篇:記錄壹次線上線程池爆了的問題
  • copyright 2024編程學習大全網