WinForm设计之ToolPanelTree

 Author:水如烟  

因为但求简单实现,自己也不深究,所以做出来比较粗糙。马马虎虎应付过去。

效果图:

控件代码见应用类代码:LzmTW.uSystem.uWindows.uForms + ToolPanelTree

Imports  System.Reflection

Public   Class  Form1

    
Private   Sub  Form1_Load( ByVal  sender  As  System.Object,  ByVal  e  As  System.EventArgs)  Handles   MyBase .Load
        
Me .ToolStripButton1.Image  =  LzmTW.ResourceBitmap.GetMagenta( GetType (DataGridView),  " DataGridView.bmp " )

    
End Sub

    
Private   Sub  ToolStripButton1_Click( ByVal  sender  As   Object ByVal  e  As  System.EventArgs)  Handles  ToolStripButton1.Click
        
Dim  mNode1  As  TreeNode  =  AssemblyStaticMethodNode( GetType ( Object ))
        
Dim  mNode2  As  TreeNode  =  AssemblyStaticMethodNode( GetType (Microsoft.VisualBasic.Strings))
        
With   Me .ToolPanelTree1.TreeView
            .BeginUpdate()
            .Nodes.Clear()
            .Nodes.AddRange(
New  TreeNode() {mNode1, mNode2})
            .Sort()
            .EndUpdate()
        
End   With
    
End Sub

    
Public   Function  AssemblyStaticMethodNode( ByVal  t  As  Type)  As  TreeNode

        
Dim  mAssembly  As   Assembly   =   Assembly .GetAssembly(t)

        
Dim  mRootNode  As   New  TreeNode(mAssembly.GetName.Name)
        
Dim  mSecondNode  As  TreeNode  =   Nothing

        
Dim  mCurrentNode  As  TreeNode  =   Nothing
        
Dim  mCurrentTypeChanged  As   Boolean   =   False

        
Dim  mBinding  As  BindingFlags  =  BindingFlags.Public  &  BindingFlags.Static

        
For   Each  mModule  As  [ Module In  mAssembly.GetModules
            mSecondNode 
=  mRootNode.Nodes.Add(mModule.ScopeName)

            
For   Each  mType  As  Type  In  mModule.GetTypes

                
If  mType.IsClass  Then

                    mCurrentTypeChanged 
=   True
                    
For   Each  mMethod  As  MethodInfo  In  mType.GetMethods(mBinding)

                        
If  mCurrentTypeChanged  Then
                            mCurrentNode 
=  mSecondNode.Nodes.Add(mType.FullName)

                            mCurrentTypeChanged 
=   False
                        
End   If

                        mCurrentNode.Nodes.Add(mMethod.ToString)
                    
Next

                
End   If

            
Next
        
Next

        
Return  mRootNode
    
End Function

End Class

上面用到的一个函数,是这样(临时的,所以还不用贴上来)

Namespace  LzmTW

    
Public   Class  ResourceBitmap
        
Private   Sub   New ()
        
End Sub

        
Public   Shared   Function  [ Get ]( ByVal  t  As  Type,  ByVal  name  As   String As  Bitmap
            
Return   New  Bitmap(t, name)
        
End Function

        
Public   Shared   Function  GetMagenta( ByVal  t  As  Type,  ByVal  name  As   String As  Bitmap
            
Dim  mBitmap  As  Bitmap  =  [ Get ](t, name)
            mBitmap.MakeTransparent(Color.Magenta)
            
Return  mBitmap
        
End Function
    
End Class

End Namespace
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值