web下有属性,winforn下没有能把web下的控件引用到winform下???

解决方案 »

  1.   

    什么是最终节点?
    无子节点的Node?
      

  2.   


    Public Class Form1    Private TestTree As New MyTree    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            For i As Integer = 0 To 10
                Dim n As TreeNode = TestTree.Nodes.Add("Node" + i.ToString)
                For j As Integer = 0 To 5
                    Dim nn As TreeNode = n.Nodes.Add("SubNode" + j.ToString)
                    For m As Integer = 0 To 4
                        nn.Nodes.Add(m.ToString)
                    Next
                Next
            Next
            Me.Controls.Add(TestTree)
            TestTree.Dock = DockStyle.Fill
        End SubEnd ClassPublic Class MyTree
        Inherits TreeView    Dim NodeStringFormat As StringFormat    Public Sub New()
            NodeStringFormat = New StringFormat
            NodeStringFormat.LineAlignment = StringAlignment.Center : NodeStringFormat.Alignment = StringAlignment.Near        Me.DrawMode = TreeViewDrawMode.OwnerDrawText
            Me.CheckBoxes = True
        End Sub    Private Sub MyTreeView_DrawNode(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawTreeNodeEventArgs) Handles Me.DrawNode
            If e.Node.Nodes.Count > 0 Then
                Dim r As New Rectangle(e.Node.Bounds.Left - 14, e.Node.Bounds.Top, e.Node.Bounds.Width + 14, e.Node.Bounds.Height)
                e.Graphics.FillRectangle(New SolidBrush(Me.BackColor), r)
                e.Graphics.DrawString(e.Node.Text, Me.Font, New SolidBrush(Me.ForeColor), r, NodeStringFormat)
            Else
                Dim r As New Rectangle(e.Bounds.Left - 13, e.Bounds.Top + 1, 13, 13)
                ControlPaint.DrawCheckBox(e.Graphics, r, IIf(e.Node.Checked, ButtonState.Checked, ButtonState.Normal))            e.Graphics.FillRectangle(IIf(e.State And TreeNodeStates.Selected = TreeNodeStates.Selected, New SolidBrush(Color.Cyan), New SolidBrush(Me.BackColor)), e.Node.Bounds)
                e.Graphics.DrawString(e.Node.Text, Me.Font, New SolidBrush(Me.ForeColor), e.Bounds, NodeStringFormat)
            End If    End SubEnd Class
    public class Form1 

        
        private MyTree TestTree = new MyTree(); 
        
        private void Form1_Load(object sender, System.EventArgs e) 
        { 
            for (int i = 0; i <= 10; i++) { 
                TreeNode n = TestTree.Nodes.Add("Node" + i.ToString); 
                for (int j = 0; j <= 5; j++) { 
                    TreeNode nn = n.Nodes.Add("SubNode" + j.ToString); 
                    for (int m = 0; m <= 4; m++) { 
                        nn.Nodes.Add(m.ToString); 
                    } 
                } 
            } 
            this.Controls.Add(TestTree); 
            TestTree.Dock = DockStyle.Fill; 
        } 
        
    } public class MyTree : TreeView 

        
        StringFormat NodeStringFormat; 
        
        public MyTree() 
        { 
            NodeStringFormat = new StringFormat(); 
            NodeStringFormat.LineAlignment = StringAlignment.Center; 
            NodeStringFormat.Alignment = StringAlignment.Near; 
            
            this.DrawMode = TreeViewDrawMode.OwnerDrawText; 
            this.CheckBoxes = true; 
        } 
        
        private void MyTreeView_DrawNode(object sender, System.Windows.Forms.DrawTreeNodeEventArgs e) 
        { 
            if (e.Node.Nodes.Count > 0) { 
                Rectangle r = new Rectangle(e.Node.Bounds.Left - 14, e.Node.Bounds.Top, e.Node.Bounds.Width + 14, e.Node.Bounds.Height); 
                e.Graphics.FillRectangle(new SolidBrush(this.BackColor), r); 
                e.Graphics.DrawString(e.Node.Text, this.Font, new SolidBrush(this.ForeColor), r, NodeStringFormat); 
            } 
            else { 
                Rectangle r = new Rectangle(e.Bounds.Left - 13, e.Bounds.Top + 1, 13, 13); 
                ControlPaint.DrawCheckBox(e.Graphics, r, (e.Node.Checked ? ButtonState.Checked : ButtonState.Normal)); 
                
                e.Graphics.FillRectangle((e.State & TreeNodeStates.Selected == TreeNodeStates.Selected ? new SolidBrush(Color.Cyan) : new SolidBrush(this.BackColor)), e.Node.Bounds); 
                e.Graphics.DrawString(e.Node.Text, this.Font, new SolidBrush(this.ForeColor), e.Bounds, NodeStringFormat); 
            } 
            
        } 
        

    vb下代码已测试 
    c#代码没有测试,是软件自动转换的。 
    希望对LZ有用。呵呵