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

前端之家收集整理的这篇文章主要介绍了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
原文链接:https://www.f2er.com/vb/258727.html

猜你在找的VB相关文章