拖放操作-实现Treeview到Treeview和DataGridView到Treeview

要求:新建一From窗体,放两个TreeView控件,TreeView1,TreeView2

1>实始化树节点.

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            Dim mNode As TreeNode = Me.TreeView1.Nodes.Add("Fruits")
            mNode.Nodes.Add("Apple")
            mNode.Nodes.Add("Peach")
            mNode.Expand()
            mNode = Me.TreeView2.Nodes.Add("Vegetables")
            mNode.Nodes.Add("Tomato")
            mNode.Nodes.Add("Eggplant")
            mNode.Expand()
            Me.TreeView1.AllowDrop = True
            Me.TreeView2.AllowDrop = True

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

2>Treeview1的MouseDown事件

    Private Sub TreeView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseDown
        Try
            Dim mTree As TreeView = sender
            Dim mNode As TreeNode = mTree.GetNodeAt(e.X, e.Y)
            mTree.SelectedNode = mNode
            If Not mNode Is Nothing Then
                mTree.DoDragDrop(mNode.Clone, DragDropEffects.Copy)
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

3>TreeView2的DragOver事件

 Private Sub TreeView2_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView2.DragOver
        Try
            Dim Tree As TreeView = sender
            e.Effect = DragDropEffects.None

            If Not CType(e.Data.GetData(GetType(TreeNode)), TreeNode) Is Nothing Then
                Dim pt As Point = New Point(e.X, e.Y)
                pt = Tree.PointToClient(pt)

                Dim mNode As TreeNode = Tree.GetNodeAt(pt)
                If Not mNode Is Nothing Then
                    e.Effect = DragDropEffects.Copy
                    Tree.SelectedNode = mNode
                End If
            End If

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

4>TreeView2的DragDrop事件

    Private Sub TreeView2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TreeView2.DragDrop
        Try
            Dim Tree As TreeView = sender
            Dim pt As Point = New Point(e.X, e.Y)
            pt = Tree.PointToClient(pt)
            Dim mNode As TreeNode = Tree.GetNodeAt(pt)
            mNode.Nodes.Add(CType(e.Data.GetData(GetType(TreeNode)), TreeNode))
            mNode.Expand()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

5>F5执行.拖放的效果就出来了.


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1733198


要求:新建一From1窗体, From1窗体里放TreeView1和DataGridView1控件.

1>初始化数据

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            Dim mNode As TreeNode = Me.TreeView1.Nodes.Add("Fruits")
            mNode.Nodes.Add("Apple")
            mNode.Nodes.Add("Peach")
            mNode.Expand()
             Me.TreeView1.AllowDrop = True
            Me.DataGridView1.Columns.Add("code", "code")
            Me.DataGridView1.Columns.Add("name", "name")
            Me.DataGridView1.Columns.Add("age", "age")
            Me.DataGridView1.Columns.Add("Address", "Address")
            Me.DataGridView1.AllowDrop = True

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

2>TreeView1的MouseDown事件

Dim mTree As TreeView = sender
            Dim mNode As TreeNode = mTree.GetNodeAt(e.X, e.Y)
            mTree.SelectedNode = mNode
            If Not mNode Is Nothing Then
                mTree.DoDragDrop(mNode.Text, DragDropEffects.Copy)
            End If

3>DataGridView1的DragOver事件

Dim dgv As DataGridView = CType(sender, DataGridView)

            Dim p As Point = dgv.PointToClient(New Point(e.X, e.Y))

            Dim hti As DataGridView.HitTestInfo = dgv.HitTest(p.X, p.Y)

            If hti.Type = DataGridViewHitTestType.Cell Then
                e.Effect = DragDropEffects.Copy
            Else
                e.Effect = DragDropEffects.None
            End If

4>DataGridView2的DragDrop事件

If e.Data.GetDataPresent(GetType(System.String)) Then

                Dim str As String = CType(e.Data.GetData(GetType(System.String)), System.String)

                Dim dgv As DataGridView = DirectCast(sender, DataGridView)

                Dim p As Point = dgv.PointToClient(New Point(e.X, e.Y))

                Dim hti As DataGridView.HitTestInfo = dgv.HitTest(p.X, p.Y)

                If hti.Type = DataGridViewHitTestType.Cell Then
                    Dim cell As DataGridViewCell = dgv(hti.ColumnIndex, hti.RowIndex)
                    cell.Value = str
                End If

            End If

5>F5运行.通过.
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1733229

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值