I wrote this small utility app while working on the custom 'tree with columns' control, which you can see used in this same app. There is really not much to it, but I figured it might be useful for others working on custom controls.
VisualStyleElement is a UI element exposed by the system and can be used by any custom control to draw a system control or element. In the case of the tree control, the visual element is used to draw the column and row headers.
More information regarding the visual styles can be found in
System.Windows.Forms.VisualStyles namespace and here.
The only part that was a little tricky was to populate the tree. All elements are defined as nested
static classes within
VisualStyleElement (check it out with Reflector). After a little bit of trial and error I found it to be quite simple though, get the nested types and for each type get the
static properties, and do this recursive. The code for this is in
To paint the style in the tree, I created a derived class of
CellPainter and overwrote
PaintCell for the
Style column (fieldname called
image for this column !?)
And that is all.
- 2/12/2008: V1 uploaded
A workaround fix for the hanging issue when running release. I don't understand why it would go into an infinite loop when run in release (but not when run in release from debugger), but the issue was resolved by moving 2 variables out of the