将项目从Datagridview控件拖到TreeView控件

时间:2016-02-02 04:22:15

标签: vb.net datagridview

我有一个包含行的DataGridView,但它没有使用完整的行选择。我在DataGridView中选择项目的方式只是该列的特定行的单个值。例如。 DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString

我试图找出如何实现这一点当我单击第1行中的First ColumnValue并将其拖动到TreeView控件时,它将为从第1行拖动的任何值创建NODE 1

1 个答案:

答案 0 :(得分:-1)

在做了一些挖掘后,我能够找到我想要的东西。我知道堆栈溢出不是为我编写程序,但堆栈溢出是建立在“帮助”的概念中,将人们推向正确的方向而不是“拖钓”

以下是我找到并修改以使其正常工作的代码

由于我的TreeView是动态构建的,我不得不手动设置一个addhandler。通常,如果您已经有TreeView,您可以使用Handles,如datagridview drag

所示
   AddHandler DirTree.DragEnter, AddressOf treeView1_DragEnter
    AddHandler DirTree.DragDrop, AddressOf treeView1_DragDrop


Private dragedItemText As String
    Private Sub treeView1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs)
        Dim pt As Point
        Dim destinationNode As TreeNode
        pt = DirTree.PointToClient(New Point(e.X, e.Y))
        destinationNode = DirTree.GetNodeAt(pt)
        Dim dragedNode As New TreeNode()
        dragedNode.Text = dragedItemText
        lblTitle.Text = dragedItemText

        destinationNode.Nodes.Add(dragedNode)
        dragedItemText = ""
    End Sub

    Private Sub treeView1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs)
        e.Effect = DragDropEffects.Copy
    End Sub

    Private Sub dataGridView1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGridView1.MouseDown
        If e.Button = MouseButtons.Left Then

            dragedItemText = DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(0).Value.ToString 
          'Cells(0) for first column
            DataGridView1.DoDragDrop(dragedItemText, DragDropEffects.Copy)
        End If
    End Sub