C# 解决双击TreeView表里checkbox本身Bug问题

时间:2015-11-01 10:12:42
【文件属性】:

文件名称:C# 解决双击TreeView表里checkbox本身Bug问题

文件大小:65KB

文件格式:ZIP

更新时间:2015-11-01 10:12:42

C# TreeView CheckBox 解决 问题

一个WinForm的TreeView,某node的CheckBox初始状态为false,当双击这个node的checkbox时,会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-> checked-> unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox状态为checked。在这里checkbox状态已经和显示状态不一致了 以后每次双击,checkbox显示的状态会出现一次切换,AfterCheck也会触发一次,并且checkbox显示的状态和值的状态仍然保持相反。 除上面这个问题外,还有一点,当双击treeview 的checkbox后,如果再去单击或双击该界面中除这个treeview外的任何部分,系统会忽略第一次点击事件。举例来说,一个窗口中,有一个treeview,还有一个ok按钮,当我双击这个treeview的一个checkbox后,再去点那个ok按钮,第一次点击是没有任何作用的,第二次以及以后的点击才会有效,包括点击最大化,最小化,以及关闭这种系统按钮。 为了解决以上问题,我重写了TreeView控件,在不影响其它地方的前提下,能很好的解决以上问题。我的环境:.Net framework4.0 + VS2005 + Win7 编译通过,并付执行程序。-


【文件预览】:
TreeViewEx
----testTreeView.sln(929B)
----testTreeView.suo(27KB)
----testTreeView()
--------TreeViewEx.cs(1KB)
--------Form1.Designer.cs(12KB)
--------Program.cs(512B)
--------obj()
--------bin()
--------Form1.cs(1KB)
--------Form1.resx(6KB)
--------testTreeView.csproj(3KB)
--------Properties()

网友评论

  • 快速点鼠标还是会有延迟 我做了个改进 在m.Result = IntPtr.Zero;后面加上tvhti.Node.Checked = !tvhti.Node.Checked; 非常流畅!
  • 可以,感谢分享
  • 效果不错,棒棒哒!
  • 谢谢分享!
  • TreeViewEx.cs定义的非常好!只要把TreeViewEx.cs添加进自己的应用名字空间的某一类文件中(当然是包含了要使用它的那个窗体类的类文件),再在这个窗体的Designer.cs中将原先声明为TreeView的变量改为TreeViewEx,OK!
  • 相当厉害啊,解决了双击问题,并同时不影响双击其它部位的功能
  • 相当厉害啊,解决了双击问题,并同时不影响双击其它部位的功能
  • 之前用上了,挺好的。局部根据自己的需要进行了修改
  • 可以 已解决问题
  • 谢谢,帮助我解决了这个问题
  • 解决了我的问题。
  • 下载下来学习下和解决我的问题
  • 已经在工程中使用了 很好
  • 问题解决了
  • 有用,不错的资源
  • 好东西,赞一个
  • 只是控件最基本的使用方法,谈不上解决什么BUG。
  • 问题解决。。。。
  • 只是控件最基本的使用方法,谈不上解决什么BUG。
  • 还行,还可以用,很多地方都处理的不错
  • 问题已解决
  • 确实解决了这个问题,多谢;
  • 很有用,帮大忙了。
  • 多谢了,解决了我的问题
  • 很不错,研究的很深入
  • 问题解决了一半,但是还是不太顺畅啊
  • 很好,真的解决了
  • 已经很好了,这个bug属于微软的问题
  • 问题已解决,很不错,是网上搜到的那段代码的进化版
  • 状态图标上本来就不需要双击,所以屏蔽是合情合理的 只是高大上的微软却给我们留一个这么坑爹的BUG,让我们每个人都要自己解决