(is crosspost at CodeProject.com, no replies)
I'm working with a .NET System.Windows.Forms.TreeView (both .NET 2.0 and 3.5) and have a problem with the check boxes not correctly affecting/reflecting the TreeNode's Checked state.
I've enabled checkboxes and have event handlers for BeforeCheck and AfterCheck to act whenever a TreeNode's checkbox is checked or unchecked. My problem is that if you place the mouse pointer directly on a node's checkbox and double-click, the checkbox's visible checked state toggles, but the Checked state of the corresponding TreeNode does not actually change. Further the TreeView's BeforeCheck and AfterCheck handlers are never invoked [this actually seems consistent and follows from the observation the these events are raised exactly and only when anything actually changes the TreeNode.Checked property, not the state of the visible check box]. A single(left)-click on the check box works properly: the Before/AfterCheck handlers are invoked and the TreeNode's Checked state changes correctly.
Double-clicking elsewhere on the displayed node toggles the expanded/collapsed state (as I assume it's suposed to do).
I've tried to find a TreeView event handler that will allow me to catch a double-click directly on the checkbox and either ignore it or modify the node's checked state myself. But I've been unable to find an event handle to catch this.
Is this a known bug? Could there be something I'm doing wrong? It gives my application a rather annoying incorrect behavior and I really don't want to abandon the use of TreeView and have to reimplement a correct "TreeView"!
Can anyone steer me toward any information about this behavior of TreeView?
Thanks in advance.
P.S. using C#, Studio 2008, running on Vista Ultimate 32bit. Answered below.