国产探花免费观看_亚洲丰满少妇自慰呻吟_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#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁怀市| 观塘区| 彰化市| 遂平县| 丘北县| 葵青区| 科技| 望奎县| 灌阳县| 武宣县| 理塘县| 长丰县| 海南省| 马公市| 盘锦市| 长白| 涡阳县| 德化县| 巧家县| 桑植县| 绿春县| 阿合奇县| 平昌县| 乌拉特后旗| 大庆市| 奉节县| 忻城县| 娱乐| 五莲县| 桦甸市| 镇远县| 磴口县| 阳山县| 临西县| 白河县| 泉州市| 岢岚县| 嘉峪关市| 巫山县| 沁水县| 北流市|