我曾经写过一个筛选的Demo,里面有一个列表选择控件:
这次只是说一个全选功能。
我曾经以为应该有更优雅的方式去实现全选功能,即使到现在我还是没有找到,有时候人们会告诉你不要对一个问题过于纠结,只要实现了功能就成,但是程序员往往不是这么想。
当我开始再一次用WinForm实现这个功能时,发现还是只能使用原来的方法,没有更好的方案去做这个。这要说还是由于WinForm过于死板,无法如WPF一般简单的实现自定义。
鉴于此Demo为本系列文章的第一篇WPF的Demo,这里尽量说的自己感觉易懂,仅仅展示重写模板的一些问题。
原文地址:http://nanqi.info/blog/2013/03/31/winform-wpf-3/
WinForm中的实现方案
代码几乎与那个筛选的Demo没有改变多少,唯一不同的是我发现其实不必自己去控制CheckedBox的选择(AutoCheck),同时也发现其实自己当时做的也没有错,因为如果当CheckedBox的CheckState属性为indeterminate时,想让再点一次让其选中,那么还必须我这么做(其实也从侧面反应,自己不止实现多余,而且做错了)。
我依旧使用CheckedListBox的ItemCheck事件,代码如下: