如何在VB_NET中实现拖放操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
鼠标用户所期望的一件事就是能够在应用程序中实现拖放。如果你注意到一些大型应用程序或windows自身的话,拖放操作几乎随处可见。例如,用户可能已经习惯了在windows资源管理器中拖放文件,或在word中拖放文本等操作了。
尽管拖放操作随处可见,但是只有极少数程序员在他们所编写的程序中实现拖放功能,最可能的原因是他们认为实现拖放可能比想象的还要难。这篇文章列举了如何在窗体内、窗体之间,甚至应用程序之间移动文本、图片或者文件的例子,显示了在中实现拖放是非常容易得。
System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If Not PictureBox1.Image Is Nothing Then
' Set a flag to show that the mouse is down.
End If
End Sub
Private Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles TextBox2.DragDrop
' Display the copy cursor.
e.Effect = DragDropEffects.Copy
Else
' Display the no-drop cursor.
e.Effect = DragDropEffects.None
If e.KeyState = 9 Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If
Else
e.Effect = DragDropEffects.None
尽管拖放图片并不像拖放文本那样经常用到,然而它在许多应用程序中仍然是很有用的。实际上这两者之间也没有什么不同,只不过是数据类型发生了变化而已。
1、 在Form中添加两个PictureBox控件。
2、 在代码窗体中添加如下代码
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles TextBox2.DragEnter
' Check the format of the data being dropped.
If (e.Data.GetDataPresent(DataFormats.Text)) Then
' Assign the image to the PictureBox.
PictureBox2.Image = e.Data.GetData(DataFormats.Bitmap)
' If the CTRL key is not pressed, delete the source picture.
System.EventArgs) Handles MyBase.Load
' Enable dropping.
PictureBox2.AllowDrop = True
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As _
1、向一个窗体中添加两个文本框,并把第二个TextBox控件的AllowDrop属性设置成True,添加如下代码。
Private MouseIsDown As Boolean = False
Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As _
' Initiate dragging.
TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy)
End If
MouseIsDown = False
End Sub
Private Sub TextBox2_DragEnter(ByVal sender As Object, ByVal e As _
DragDropEffects.Move)
Enห้องสมุดไป่ตู้ If
m_MouseIsDown = False
End Sub
Private Sub PictureBox2_DragEnter(ByVal sender As Object, ByVal e As _
If m_MouseIsDown Then
' Initiate dragging and allow either copy or move.
PictureBox1.DoDragDrop(PictureBox1.Image, DragDropEffects.Copy Or _
在DragEnter事件中,GetDataPresent方法检查正在拖动的数据格式,在本例中是文本,所以Effect属性设置成复制,同时也显示copy指针。
在DragDrop事件中,GetData方法用来从DataObject中获得文本,并把它送给目标文本框。
拖动图片
4、当鼠标移到某个控件时,就同时激发了这个控件的DragEnter事件。GetDataPresent方法是用来确认拖过来的数据是否适合目标控件,Effect属性是用来显示适当的鼠标指针。
5、如果用户在有效的目标控件上释放鼠标,就同时激发了DragDrop事件。DragDrop事件句柄中的代码从DataObject对象中释放数据并把它显示在目标控件中。
m_MouseIsDown = True
End If
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
2、接下来就依次激发了GiveFeedBack事件。在大多数情况下,你并不需要担心GiveFeedBack事件,然而你如果想自定义拖放过程中的鼠标指针的话,你可以在这些地方加上你的代码。
3、任何有AllowDrop属性而且被设置成True的控件都是隐含的Drop对象。AllowDrop属性可以在设计时的属性窗口中进行设置,也可以在Form_load事件自动加载。
Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
If MouseIsDown Then
System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
' Set a flag to show that the mouse is down.
MouseIsDown = True
End Sub
' Paste the text.
TextBox2.Text = e.Data.GetData(DataFormats.
End Sub
在上面的例子中,MouseDown事件是用来判断鼠标是否按下的,MouseMove事件中用到了DoDragDrop方法。尽管你可以在MouseDown事件中来初始化Drag,然而这么做会带来出人意料之外的结果。在用户点击控件时,将显示no-drag
从VB6到有何变化?
(略)
拖放文本
拖放操作的一个很简单然而很有用的情形是从一个TextBox控件复制文本到另一个TextBox控件。当然你可以只用键盘就能实现(CTRL + C
and CTRL + V),然而拖放更简单因为它仅需要鼠标的移动就可以完成。
End If
End Sub
Private Sub PictureBox2_DragDrop(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles PictureBox2.DragDro小权我的空间哈。 主页博客相册|个人档案 |好友
查看文章
在中实现拖放操作2009年06月17日 星期三 22:32绪论
Windows用户一般分为两类:一类习惯用键盘操作,一类习惯用鼠标操作。程序员们在编程时一般会提供快捷键(在命令或字母中加下划线)或快捷方式(用CTRL加字母的组合)来照顾到那些习惯键盘的用户,但是那些鼠标用户却被忽略了。因为程序员们一般都习惯用键盘,所以他们这种重视键盘操作的特点是可以理解的,但是每个程序员也应该考虑到提供鼠标支持。
System.Windows.Forms.DragEventArgs) Handles PictureBox2.DragEnter
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
' Check for the CTRL key.
1、拖(dragging)是通过调用源控件的DoDragDrop方法来初始化的,DoDragDrop有两个参数
data,指定将要传送的数据
allowedEffects,指定允许进行的操作(复制或移动)
这样自动创建了一个新的Dataobject对象
指针。DoDragDrop方法有两个参数
data,这个例子中代表的是第一个TextBox的Text属性。
allowedEffects,这个例子中是只允许复制。
在MouseMove事件中MouseIsDown标志设置成了False,尽管在这个例子没有必要,但是如果你有很多控件支持拖放时,你将会得到一个运行时例外。
拖放如何进行
拖放实际上就如同用鼠标复制粘帖,因此你必须有一个可以复制或移动的源,也要有一个可以粘贴的目的地。在这两个操作过程中,数据是保存在内存中的。复制粘贴用的是剪切版,而拖放用的却是一种本质上是私有剪切板的Dataobject的对象。
下面是典型的托放操作的时间序列:
相关文档
最新文档