上图所示,TreeView控件有CheckBox选框,鼠标在对CheckBox状态进行改变时,快速双击代码运行时会发现CheckBox的显示状态发生变化但实际上节点的选中状态与显示的状态不一致,也就是快速双击时CheckBox状态无法正常响应。在网上查资料,验证后发现该方法可行
class TreeViewExt : TreeView
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x203) { m.Result = IntPtr.Zero; }
else base.WndProc(ref m);
}
}
构建一个新的类TreeViewExt 继承TreeView,然后用TreeViewExt 替换在控件的界面定义的TreeView类型即可,如所示
替换代码位置就在Form.Designer.cs的自动生成代码的源文件中
将
private this.Windows.Forms.TreeView FuncSelectTreeView; //声明部分
this.FuncSelectTreeView = new this.Windows.Forms.TreeView(); //定义部分
替换为
private TreeViewExt FuncSelectTreeView;
this.FuncSelectTreeView = new TreeViewExt ();
FuncSelectTreeView为你窗体程序中的TreeView控件
该操作会产生一个问题,就是该控件的鼠标双击事件不会被响应