首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

TreeView 节点拖拽有关问题之二(分不够可以加)

2012-01-26 
TreeView节点拖拽问题之二(分不够可以加)终于知道怎么查积分了原来有200多可用分周六开始就连休5天了希望

TreeView 节点拖拽问题之二(分不够可以加)
终于知道怎么查积分了
原来有200多可用分
周六开始就连休5天了
希望之前问题能解决

问题就是
如何实现   按ctrl   或者   shift   +单击
选中多个节点
然后拖拽到datagridview里
最好有代码
或者告诉我都在什么事件   用什么属性也行

[解决办法]
例子源代码
http://www.java2s.com/Code/CSharp/GUI-Windows-Form/TreeViewDragAndDrop.htm
[解决办法]
http://www.codeproject.com/cs/miscctrl/DragDropTreeview.asp?df=100&forumid=84437&exp=0&select=1239364

google可以搜索很多

private void treeView2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeNode newNode;

if (e.Data.GetDataPresent( "System.Windows.Forms.TreeNode ", false))
{
Point pt;
TreeNode destinationNode;
pt = treeView2.PointToClient(new Point(e.X, e.Y));
destinationNode = treeView2.GetNodeAt(pt);
newNode = (TreeNode) e.Data.GetData( "System.Windows.Forms.TreeNode ");

if (!destinationNode.Equals(newNode))
{

//destinationNode.Nodes.Add(newNode.Clone());
destinationNode.Nodes.Add((TreeNode) newNode.Clone());
destinationNode.Expand();

//Remove original node
newNode.Remove();
}
}
}


private void treeView2_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}


private void treeView2_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
[解决办法]
首先,AllowDrop 设为True;
然后在
private void treeView_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
this.DoDragDrop(e.Item,DragDropEffects.Move);
}
///鼠标移动时选中所在坐标的节点
private void treeViewPage_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
Point targetPoint = treeViewPage.PointToClient(new Point(e.X, e.Y));
this.treeViewPage.SelectedNode = this.treeViewPage.GetNodeAt(targetPoint);
}

///然后在这个事件里写你要做什么的代码
private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
}
[解决办法]
给你个例子,自已参照改一下.

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
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
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

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
[解决办法]
帮顶
[解决办法]
你在拖拽事件中取得这个tree节点的信息,把它记录下来,在datagirdview中新加一行,把数据对应附上
[解决办法]
幫頂
[解决办法]
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.Text, DragDropEffects.Copy)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop

Try
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
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub

Private Sub DataGridView1_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragOver

Try
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
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub
[解决办法]
顶一个

热点排行