讲述VB.NET实现拖动图片

开发 后端
这里介绍尽管VB.NET实现拖动图片并不像拖放文本那样经常用到,然而它在许多应用程序中仍然是很有用的。实际上这两者之间也没有什么不同,只不过是数据类型发生了变化而已。

学习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多线程
责任编辑:佚名 来源: 比特网
相关推荐

2009-10-29 09:57:16

VB.NET实现数据绑

2009-10-16 13:26:53

VB.NET Exce

2009-10-14 17:08:44

VB.NET使用Fil

2009-10-21 10:45:50

VB.NET Quic

2009-10-13 17:03:55

VB.NET面向对象

2009-11-02 15:45:03

VB.NET IEnu

2009-10-12 16:39:59

OracleTransVB.NET使用

2009-10-16 09:35:24

VB.NET制作透明窗

2009-10-19 08:55:22

VB.NET多重继承

2009-10-15 11:11:08

VB.NET Text

2009-10-15 16:39:00

VB.NET读取INI

2009-10-10 16:44:52

VB.NET开发控件

2009-10-14 11:15:06

VB.NET Grou

2009-10-27 11:39:03

VB.NET事件处理程

2009-10-26 18:11:47

VB.NET调用Exc

2009-10-21 18:28:48

VB.NET表间拖放

2009-10-22 09:20:46

VB.NET Proc

2009-10-26 19:22:29

VB.NET使用Log

2010-01-15 13:30:50

VB.NET Prog

2009-11-03 17:31:01

VB.NET窗体
点赞
收藏

51CTO技术栈公众号