日期:2014-05-17  浏览次数:20910 次

[翻译]ComboBoxTree
[翻译]ComboBoxTree

作者:Gabe Anguiano,2004年2月2日

注:本文翻译自 http://www.codeproject.com/Articles/5967/ComboBoxTree



概述

ComboBoxTree控件是在Gevik Babakhani的下拉Treeview控件之上扩展的。接近85%的代码已被重写。此更新的控件提供了以下增强功能:

? TreeView的尺寸大小可以超出其父控件和所在窗口。
? 和标准的Windows大小调整手柄一致的调整大小的功能。
? 当是根节点时,填充下拉框选择,由SelectionSeparator属性指定分隔符(比如SelectionSeperator设置为“.”时会产生类似“Node0.subnode1.subnode2.rootnode”)。
? 更好的设计时支持,包括标准的TreeView控件的所见即所得的节点集合编辑器。
? 选定的节点框可以编辑,也可通过一个属性访问——但是不会验证手动设置的值。
? 更简化,使用了region块和更少的方法调用。

请随时发表评论、问题或批评。这是我的第一个Windows控件,请多指教。

背景

我在一个项目中需要多个TreeView,但是窗体的控件十分有限,所以需要一个控件。当我发现Gevik的下拉TreeView控件时,我欣慰地发现那是我一直在寻找的,但很快就遇到了一些需要注意的问题,于是我花了点时间对代码做了更新。

原本我不打算重新发布更改后的控件,但我希望自己的回馈能成为感谢的一种方式。感谢原始项目代码的作者——感谢Gevik Babakhani ;-)

要使用这个控件,只需简单地添加ComboBoxTree.dll文件到你份额工具箱中并且将控件放在窗体上。这个控件将会提供你所需的TreeView控件的常用的功能。

关注点

我之所以能够解决“允许下拉框尺寸超过父窗体”的问题,是通过将TreeView控件中添加到它所在的无边界窗体实现的。下一个问题涉及到大小调整手柄如何正常工作。解决的办法是通过计算调整手柄内的绝对鼠标位置和包含TreeView的窗体的位置的鼠标偏移量。最后一个大问题是滚动条显示时的大小调整手柄如何处理。禁用滚动条不是解决的办法,唯一的选择是在底部和右边添加内边距,有些另类,但绝对实用!

更新历史

? 01/26/04 1.0提交
? 02/02/04 1.2版提交,更改包括:
Text属性可以被重写。
添加AbsoluteChildrenSelectableOnly属性,用户可以被只允许选择终端节点或所有节点。
公有方法ValidateText可用来验证手动输入的文本。
SelectionSeparator更名为BranchSeparater。
小的工具箱类别的变化。

------解决方案--------------------
又发一帖,连续三帖啊,这种不常用的ComboBoxTree就不要再发了
还都是推荐帖


------解决方案--------------------
这控件忒强大了...
------解决方案--------------------
探讨

这控件忒强大了...

------解决方案--------------------
that is some good stuff! thanks!
------解决方案--------------------
感谢楼主分享,真的很强大
------解决方案--------------------
非常感谢!!!!很有用的软件!!!!!!
------解决方案--------------------
这控件虽然不起眼,但写出来难度却不小!
------解决方案--------------------
谢谢翻译分享,非常不错.
------解决方案--------------------
Thank you for sharing