Imports System.Reflection Imports Softelvdm.Controls Imports Softelvdm.SftTreeNET Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sftTree1.Initializing = True sftTree1.Columns.Count = 4 ' This sample demonstrates how the various parts of a tree control are used in cells. ' 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 method to use a (small) bitmap ' that is located on your system. Dim img As Image = Bitmap.FromFile("..\\..\\test.gif") ' Add an item Dim item As ItemClass = sftTree1.ItemCollection.Add() ' Add a text part to the first cell (could use CellBaseClass.Text instead) Dim cell As CellClass = item.Cells(0) Dim tp As TextPartClass = New TextPartClass("The first cell", LineStyleEnum.Wordwrap, HAlignmentOptionalEnum.Left, _ VAlignmentOptionalEnum.Top, Color.Blue, Color.Green, Color.Red, Color.Blue, New Font("Arial", 12), StringFormatFlags.LineLimit Or StringFormatFlags.MeasureTrailingSpaces) cell.Parts.Add(tp) ' Followed by a check box (still in the first cell) Dim cb As CheckBoxPartClass = New CheckBoxPartClass(CheckBoxStateEnum.Unchecked, HAlignmentOptionalEnum.Left, VAlignmentOptionalEnum.Top, True) AddHandler cb.Action, AddressOf cb_Action cell.Parts.Add(cb) ' Followed by an image (still in the first cell) Dim ip As ImagePartClass = New ImagePartClass(img) cell.Parts.Add(ip) ' Add contents to the second cell item.Cells(1).Text = "The" & vbCrLf & "easy" & vbCrLf & "way" ' Add an image to the third cell cell = item.Cells(2) cell.Image = img ip = cell.Parts(0) AddHandler ip.Action, AddressOf ip_Action ' Add another item item = sftTree1.ItemCollection.Add() ' Add a progressbar to the first cell Dim pbp As ProgressBarPartClass = New ProgressBarPartClass(0, 50, 25, 100, 12, GadgetAppearanceEnum.ThemedSystem, _ Color.Red, Color.White, System.Drawing.Drawing2D.LinearGradientMode.Vertical) pbp.PartAlignment = PartAlignmentEnum.EntireArea pbp.Appearance = GadgetAppearanceEnum.System item.Cells(0).Parts.Add(pbp) ' Add a button to the second cell Dim bp As ButtonPartClass = New ButtonPartClass(False, HAlignmentOptionalEnum.Default, VAlignmentOptionalEnum.Default, _ True, False, GadgetAppearanceEnum.ThemedSystem, Nothing, "Click Me", Nothing, Color.Red) AddHandler bp.Action, AddressOf bp_Action item.Cells(1).Parts.Add(bp) ' Add text to the third cell cell = item.Cells(2) cell.Text = "Sample Text" ' Add a dropdown button (still in the third cell) Dim ddp As DropDownButtonPartClass = New DropDownButtonPartClass() AddHandler ddp.Action, AddressOf ddp_Action ddp.PartAlignment = PartAlignmentEnum.FlushEnd cell.Parts.Add(ddp) ' Add another item item = sftTree1.ItemCollection.Add() ' Add three parts with a vertical orientation to the first cell cell = item.Cells(0) cell.Orientation = OrientationOptionalEnum.Vertical tp = New TextPartClass("First part") tp.HAlign = HAlignmentOptionalEnum.Left cell.Parts.Add(tp) ip = New ImagePartClass(img) ip.HAlign = HAlignmentOptionalEnum.Center cell.Parts.Add(ip) tp = New TextPartClass("Third part") tp.HAlign = HAlignmentOptionalEnum.Right cell.Parts.Add(tp) ' Add three parts with a vertical orientation to the second cell cell = item.Cells(1) cell.Orientation = OrientationOptionalEnum.Vertical tp = New TextPartClass("First part") tp.HAlign = HAlignmentOptionalEnum.Center cell.Parts.Add(tp) ip = New ImagePartClass(img) ip.HAlign = HAlignmentOptionalEnum.Center cell.Parts.Add(ip) tp = New TextPartClass("Third part") tp.HAlign = HAlignmentOptionalEnum.Center cell.Parts.Add(tp) ' Add three parts with a vertical orientation to the third cell cell = item.Cells(2) cell.Orientation = OrientationOptionalEnum.Vertical tp = New TextPartClass("First part") tp.HAlign = HAlignmentOptionalEnum.Right cell.Parts.Add(tp) ip = New ImagePartClass(img) ip.HAlign = HAlignmentOptionalEnum.Center cell.Parts.Add(ip) tp = New TextPartClass("Third part") tp.HAlign = HAlignmentOptionalEnum.Left cell.Parts.Add(tp) ' Set a sorting indicator in the first column header cell = sftTree1.Headers(0, 0) cell.SortIndicatorPosition = SortIndicatorPositionEnum.Side cell.SortStatus = SortStatusEnum.Ascending sftTree1.Columns.MakeOptimal(0, False) sftTree1.RecalcHorizontalExtent() sftTree1.Initializing = False End Sub ' Dropdown button Action event Private Sub ddp_Action(ByVal sender As Object, ByVal e As ActionEventArgs) Dim ddp As DropDownButtonPartClass = e.Part MessageBox.Show("Dropdown button clicked.") End Sub ' Button part Action event Private Sub bp_Action(ByVal sender As Object, ByVal e As ActionEventArgs) ' this is our button that was just clicked Dim bp As ButtonPartClass = e.Part ' this is the cell containing the button Dim cell As CellClass = bp.PartOwner ' get the previous cell cell = cell.Previous ' this cell's first (and only) part is a progressbar (in this example) Dim pbp As ProgressBarPartClass = cell.Parts(0) ' increment the progressbar's Value property Dim Val As Integer If pbp.Value = pbp.Max Then Val = 0 Else Val = pbp.Value + 10 End If Val = Math.Min(Val, pbp.Max) pbp.Value = Val End Sub ' Checkbox part Action event Private Sub cb_Action(ByVal sender As Object, ByVal e As ActionEventArgs) MessageBox.Show("Clicked the checkbox.") End Sub ' Image part Action event Private Sub ip_Action(ByVal sender As Object, ByVal e As ActionEventArgs) MessageBox.Show("Clicked the image.") End Sub ' ItemClick event Private Sub sftTree1_ItemClick(ByVal sender As Object, ByVal e As Softelvdm.SftTreeNET.ItemClickEventArgs) Handles sftTree1.ItemClick Debug.Write("** ItemClick") DumpValues(e) 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