Winform中双击TreeView的CheckBox,级联节点变化不一致的问题
这两天捣鼓Winform的TreeView时遇到一个很纠结的问题:
我的TreeView是带有CheckBox的级联树,单击父节点的时候,子节点也会发生相应的变化
遇到的问题是 当发生双击事件时,被点击的节点状态变化了两次,一切正常。
但是其他节点却只变化了一次。 下断点仔细检查后发现,虽然是双击 但是AfterCheck事件却只触发一次。。
后来上网查过之后得知这是Win7和Vista下的操作系统Bug,解决方法是写一个自定义的TreeView类,并覆盖一个方法
using System; using System.Windows.Forms; public class MyTreeView : TreeView { protected override void WndProc(ref Message m) { // Suppress WM_LBUTTONDBLCLK if (m.Msg == 0x203) { m.Result = IntPtr.Zero; } else base.WndProc(ref m); } }
不过这样有一个副作用,就是双击节点时,失去了[展开/折叠]的效果
使用方法:重新编译后,就会在工具栏看到一个名为MyTreeView的自定义控件了,直接拖动即可。