解决方案 »

  1.   

    如果你不需要跨应用程序复制粘贴,只需要在程序内部用一个变量记录下剪切后的那个Node对象即可。
      

  2.   

    重新Private Sub treeView_DrawNode(ByVal sender As Object, ByVal e As DrawTreeNodeEventArgs)
            Dim f As Font = If(e.Node.NodeFont IsNot Nothing, e.Node.NodeFont, e.Node.TreeView.Font)        Dim fore As Color = e.Node.ForeColor
            //判断是否剪切
            If IsTreeNodeChanged(e.Node) Then
                fore = Color.Red
            End If
            ' Have to indicate focus somehow, how about yellow foreground text?
            If e.Node Is e.Node.TreeView.SelectedNode Then
                'fore = SystemColors.HighlightText
                If (e.State And TreeNodeStates.Focused) <> 0 Then
                    f = New Font("Meiryo UI", 9.0!, FontStyle.Bold)
                End If
            End If
            Dim sz As Size = TextRenderer.MeasureText(e.Node.Text, New Font("Meiryo UI", 9.0!, FontStyle.Bold))
            Dim rc As New Rectangle(e.Bounds.X - 1, e.Bounds.Y, sz.Width + 2, e.Bounds.Height)        Dim back As Color = e.Node.BackColor
            'If IsTreeNodeDiff(e.Node) Then
            '    back = Color.LightBlue        'Else
            If back = Color.Empty Then
                back = e.Node.TreeView.BackColor
            End If
            If e.Node Is e.Node.TreeView.SelectedNode Then
                back = Color.FromArgb(255, 51, 153, 255)        End If
            'End If
            Dim bbr As New SolidBrush(back)
            e.Graphics.FillRectangle(bbr, rc)
            TextRenderer.DrawText(e.Graphics, e.Node.Text, f, rc, fore, TextFormatFlags.GlyphOverhangPadding)
            bbr.Dispose()
            f.Dispose()
        End Sub