Imports System.Reflection
Imports Softelvdm.Controls
Imports Softelvdm.SftTreeNET
Public Class Form1
Private m_PlusImage As Image = Bitmap.FromFile("..\\..\\ExpandableNormal.bmp") ' a small + bitmap
Private m_MinusImage As Image = Bitmap.FromFile("..\\..\\CollapsableNormal.bmp") ' a small - bitmap
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' This sample demonstrates how use the control as a category list (similar to
' Visual Studio's Toolbox.
' To prepare for this sample, create a new project with a blank form and add
' a SftTree/NET control named sftTree1.
' In addition, adjust the following FromFile methods to use a (small) bitmaps
' that are located on your system.
Dim img As Image = Bitmap.FromFile("..\\..\\test.gif") ' a small sample bitmap
' Most of this initialization code could be eliminated by designing the control.
sftTree1.Initializing = True
sftTree1.Headers.Rows = 0
sftTree1.Footers.Rows = 0
sftTree1.Dimensions.LevelIndent = 5 ' indent just a few pixels for level 1 items
sftTree1.TreeLineStyle = TreeLineStyleEnum.None
sftTree1.ShowExpandCollapseButtons = ShowExpandCollapseButtonsEnum.None
sftTree1.RowHeaders.Width = 0
sftTree1.ShowFocusRectangle = False
sftTree1.ToolTip.ShowAlways = True
sftTree1.ToolTip.Style = ToolTipAppearanceEnum.Balloon
Dim cat As ItemClass
cat = AddCategory("Category 1")
AddItem(cat, img, "Item 1")
AddItem(cat, img, "Item 2")
AddItem(cat, img, "Item 3")
cat = AddCategory("Category 2")
AddItem(cat, img, "Item A")
AddItem(cat, img, "Item B")
AddItem(cat, img, "Item C")
AddItem(cat, img, "Item D")
AddItem(cat, img, "Item E")
cat = AddCategory("Category 3")
AddItem(cat, img, "Item A1")
AddItem(cat, img, "Item A2")
cat = AddCategory("Category 4")
AddItem(cat, img, "Item D1")
cat = AddCategory("Category 5")
AddItem(cat, img, "Item G1")
AddItem(cat, img, "Item G2")
AddItem(cat, img, "Item G3")
AddItem(cat, img, "Item G4")
AddItem(cat, img, "Item G5")
AddItem(cat, img, "Item G6")
AddItem(cat, img, "Item G7")
AddItem(cat, img, "Item G8")
cat = AddCategory("Category 6")
AddItem(cat, img, "Item aa")
AddItem(cat, img, "Item bb")
AddItem(cat, img, "Item cc")
AddItem(cat, img, "Item dd")
AddItem(cat, img, "Item ee")
cat = AddCategory("Category 7")
AddItem(cat, img, "Item 123")
AddItem(cat, img, "Item abc")
sftTree1.Columns.MakeOptimal(0, False)
sftTree1.RecalcHorizontalExtent()
sftTree1.Initializing = False
End Sub
Private Function AddCategory(ByVal Category As String) As ItemClass
Dim item As ItemClass = sftTree1.ItemCollection.Add()
Dim cell As CellClass = item.Cells(0)
cell.Appearance = BackgroundAppearanceEnum.ThemedSystemHeaderNeverPressed
cell.Parts.Add(New ImagePartClass(m_PlusImage))
cell.Parts.Add(New TextPartClass(Category))
item.TagString = "This is a tooltip explaining " & Category
Return item
End Function
Private Sub AddItem(ByVal cat As ItemClass, ByVal img As Image, ByVal ItemText As String)
Dim item As ItemClass = cat.Add()
Dim cell As CellClass = item.Cells(0)
cell.Parts.Add(New ImagePartClass(img))
cell.Parts.Add(New TextPartClass(ItemText))
item.TagString = "This is a tooltip for an item labeled " & ItemText
End Sub
Private Sub ClickCategory(ByVal item As ItemClass)
If item.Level = 0 Then
Dim fWasExpanded As Boolean = item.Expanded
If fWasExpanded Then
item.Collapse(CollapseStyleEnum.All)
item.Cells(0).Image = m_PlusImage
Else
item.Expand(ExpandStyleEnum.All)
item.Cells(0).Image = m_MinusImage
End If
item.ScrollIntoView()
Else
' selected an item
End If
End Sub
Private Sub sftTree1_ItemClick(ByVal sender As Object, ByVal e As Softelvdm.SftTreeNET.ItemClickEventArgs) Handles sftTree1.ItemClick
If e.MouseEv.Button = Windows.Forms.MouseButtons.Left And e.Area = ItemClickAreaEnum.CellSel Then
ClickCategory(e.Item)
End If
End Sub
Private Sub sftTree1_ItemDoubleClick(ByVal sender As Object, ByVal e As Softelvdm.SftTreeNET.ItemClickEventArgs) Handles sftTree1.ItemDoubleClick
If e.MouseEv.Button = Windows.Forms.MouseButtons.Left And e.Area = ItemClickAreaEnum.CellSel Then
ClickCategory(e.Item)
End If
End Sub
Private Sub sftTree1_ShowToolTip(ByVal sender As Object, ByVal e As Softelvdm.SftTreeNET.ToolTipEventArgs) Handles sftTree1.ShowToolTip
Dim item As ItemClass = e.Cell.OwningItem
e.ToolTipText = item.TagString
End Sub
' This is a small helper routine to show all properties and fields of an object
Private Sub DumpValues(ByVal o As Object)
Dim api() As PropertyInfo = o.GetType().GetProperties()
For Each pi As PropertyInfo In api
Debug.Write(" " & pi.Name & " " & pi.GetValue(o, New Object() {}))
Next
Dim afi() As FieldInfo = o.GetType().GetFields()
For Each fi As FieldInfo In afi
Dim t As Object = fi.GetValue(o)
Dim s As String = "(null)"
If Not t Is Nothing Then s = t.ToString()
Debug.Write(" " & fi.Name & " " & s)
Next
Debug.WriteLine("")
End Sub
End Class