VB.NET中文本框实现文本拖拽

拖放如何进行


拖放实际上就如同用鼠标复制粘帖,因此你必须有一个可以复制或移动的源,也要有一个可以粘贴的目的地。在这两个操作过程中,数据是保存在内存中的。复制粘贴用的是剪切版,而拖放用的却是一种本质上是私有剪切板的Dataobject的对象。
下面是典型的托放操作的时间序列:


1、拖放(dragging)是通过调用源控件的DoDragDrop方法来初始化的,DoDragDrop有两个参数
◆data,指定将要传送的数据
◆allowedEffects,指定允许进行的操作(复制或移动)
这样自动创建了一个新的Dataobject对象


2、接下来就依次激发了GiveFeedBack事件。在大多数情况下,你并不需要担心GiveFeedBack事件,然而你如果想自定义拖放过程中的鼠标指针的话,你可以在这些地方加上你的代码。


3、任何有AllowDrop属性而且被设置成True的控件都是隐含的Drop对象。AllowDrop属性可以在设计时的属性窗口中进行设置,也可以在Form_load事件自动加载。


4、当鼠标移到某个控件时,就同时激发了这个控件的DragEnter事件。GetDataPresent方法是用来确认拖过来的数据是否适合目标控件,Effect属性是用来显示适当的鼠标指针。


5、如果用户在有效的目标控件上释放鼠标,就同时激发了DragDrop事件。DragDrop事件句柄中的代码从DataObject对象中释放数据并把它显示在目标控件中。


实际代码:

TextBox1的dragenter事件:

Private Sub TextBox1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            e.Effect = DragDropEffects.Link
            TextBox1.Text = "" ' 清空输入框内容
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub

TextBox1的dragdrop事件:

Private Sub TextBox1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop
        ' 强制进行回收
        GC.Collect()
        On Error Resume Next
        s1 = "" ' 初始化文件内容字符串
        nbpName = "" ' 初始化nbp文件名
        Dim files As Array = e.Data.GetData(DataFormats.FileDrop)
        For Each file As String In files
            TextBox1.AppendText(file)
        Next
    End Sub


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值