国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#控件Picturebox實現鼠標拖拽功能

2019-10-29 19:58:48
字體:
來源:轉載
供稿:網友

工作需要,要在一個Form里面實現一個實時預覽的picturebox圖像,由于picturebox可能會遮擋到其后面的畫面,所以要求picturebox可以由用戶自行拖拽,類似于懸浮框。

原理說明

在網上兜了幾圈之后,決定用三段代碼實現。首先要注冊鼠標的三個事件:移動、鼠標左鍵按下、鼠標左鍵抬起,當然,都是在picturebox上的動作。注冊三個事件后,即可以在三個對應的事件函數里面實現拖拽。

代碼實例

首先在窗體設計器生成的代碼里面注冊picturebox的鼠標事件。注:網上說當你添加picturebox的時候,這個相應的鼠標事件就自動給添加上了,本人在實踐中一開始沒有手動去注冊此事件,結果實驗的時候對應的鼠標事件函數就是不觸發,后來翻看設計器自動生成的初始化模塊private void InitializeComponent() ,發現并沒有自動添加鼠標事件,自己手動添加后才順利運行,博友請先查看自己的有沒有自動生成,如果自動添加上了,就不用手動寫了。 
注冊鼠標事件代碼實例(自動生成的部分已省略未寫):

private void InitializeComponent(){  //   // RealPlayWnd  //   this.RealPlayWnd.MouseUp += new MouseEventHandler(this.RealPlayWnd_MouseUp);  this.RealPlayWnd.MouseDown += new MouseEventHandler(this.RealPlayWnd_MouseDown);  this.RealPlayWnd.MouseMove += new MouseEventHandler(this.RealPlayWnd_MouseMove);}

實現代碼實例:

int xPos;int yPos;bool MoveFlag;  //在picturebox的鼠標按下事件里,記錄三個變量.  private void RealPlayWnd_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)  {    MoveFlag = true;//已經按下.    xPos = e.X;//當前x坐標.    yPos = e.Y;//當前y坐標.  } //在picturebox的鼠標按下事件里. private void RealPlayWnd_MouseUp(object sender, MouseEventArgs e) {   MoveFlag = false;  } //在picturebox鼠標移動 private void RealPlayWnd_MouseMove(object sender, MouseEventArgs e) {    if (MoveFlag)   {     RealPlayWnd.Left += Convert.ToInt16(e.X - xPos);//設置x坐標.     RealPlayWnd.Top += Convert.ToInt16(e.Y - yPos);//設置y坐標.   }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长武县| 彭泽县| 油尖旺区| 公主岭市| 冀州市| 凌云县| 黄大仙区| 义乌市| 收藏| 桂东县| 闸北区| 土默特右旗| 北碚区| 济阳县| 望城县| 镇巴县| 松原市| 镇巴县| 泗阳县| 桂林市| 昆明市| 德安县| 沧州市| 鄱阳县| 英德市| 衡南县| 监利县| 怀来县| 涿鹿县| 垣曲县| 中江县| 香格里拉县| 城固县| 昂仁县| 重庆市| 武陟县| 都昌县| 三台县| 东光县| 如皋市| 色达县|