讲述VB.NET实现拖动图片
创始人
2024-06-09 13:40:58
0

学习VB.NET时,你可能会遇到VB.NET实现拖动图片问题,这里将介绍VB.NET实现拖动图片问题的解决方法,在这里拿出来和大家分享一下。尽管VB.NET实现拖动图片并不像拖放文本那样经常用到,然而它在许多应用程序中仍然是很有用的。实际上这两者之间也没有什么不同,只不过是数据类型发生了变化而已。
1、 在Form中添加两个PictureBox控件。
2、 在代码窗体中添加如下代码

  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _  
  2. System.EventArgs) Handles MyBase.Load  
  3. ' Enable dropping.  
  4. PictureBox2.AllowDrop = True 
  5. End Sub  
  6.  
  7. Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As _  
  8. System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown  
  9. If Not PictureBox1.Image Is Nothing Then  
  10. ' Set a flag to show that the mouse is down.  
  11. m_MouseIsDown = True 
  12. End If  
  13. End Sub  
  14.  
  15. Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As _  
  16. System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove  
  17. If m_MouseIsDown Then  
  18. ' Initiate dragging and allow either copy or move.  
  19. PictureBox1.DoDragDrop(PictureBox1.Image, DragDropEffects.Copy Or _  
  20. DragDropEffects.Move)  
  21. End If  
  22. m_MouseIsDown = False 
  23. End Sub  
  24.  
  25. Private Sub PictureBox2_DragEnter(ByVal sender As Object, ByVal e As _  
  26. System.Windows.Forms.DragEventArgs) Handles PictureBox2.DragEnter  
  27. If e.Data.GetDataPresent(DataFormats.Bitmap) Then  
  28. ' Check for the CTRL key.  
  29. If e.KeyState = 9 Then  
  30. e.Effect = DragDropEffects.Copy  
  31. Else  
  32. e.Effect = DragDropEffects.Move  
  33. End If  
  34. Else  
  35. e.Effect = DragDropEffects.None  
  36. End If  
  37. End Sub  
  38.  
  39. Private Sub PictureBox2_DragDrop(ByVal sender As Object, ByVal e As _  
  40. System.Windows.Forms.DragEventArgs) Handles PictureBox2.DragDrop  
  41. ' Assign the image to the PictureBox.  
  42. PictureBox2.Image = e.Data.GetData(DataFormats.Bitmap)  
  43. ' If the CTRL key is not pressed, delete the source picture.  
  44. If Not e.KeyState = 8 Then  
  45. PictureBox1.Image = Nothing 
  46. End If  
  47. End Sub 

注意到上面的例子中第二个PictureBox控件的AllowDrop属性是在Form1_load事件中设置的,这是因为设计时PictureBox并没有AllowDrop属性。在MouseDown事件中,代码首先检测是否有要赋给PictureBox的图片;如果没有的话,当你移动图片后,接下来的click将引发一个意外。还应该注意到的是在DragEnter和DragDrop事件中代码检测CTRL键是否被按下,从而决定是否是复制还是VB.NET实现拖动图片。

为什么值会不同呢?在 DragEnter事件中,当鼠标左键按下时,产生的值是1,在加上CTRL的值8,从而值为9。见KeyState枚举列表DragEventArgs.KeyState Property到目前为止,这两个例子处理的都是同一窗体不同控件间的拖放,然而在同一应用程序的不同窗体上同样适用。

【编辑推荐】

  1. 深入分析VB.NET条件语句中的两类
  2. 五大类VB.NET运算符全面介绍
  3. 全面讨论VB.NET申明Windows API函数
  4. 剖析VB.NET平台调用是如何执行操作
  5. 分享个人总结VB.NET多线程

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...