您的位置:首页 > 其它

控件之间拖放操作(二)-----实现Treeview节点到DataGridView

2007-08-09 10:11 645 查看
要求:新建一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运行.通过.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: