文本Visual Studio .NET 2002.NET 1.0Windows 2003.NET 1.1Windows 2000Windows XPXML中级开发Visual StudioWindows.NETC#
C# 中的多选树状视图控件






4.88/5 (18投票s)
一个实现多种方式的多选的树状视图控件

引言
最新版本包含一个多选 TreeView 控件,允许您选择几种不同的 TreeNode 选择方式。
为此设置了一个测试项目 (MWControlsTest) 来测试所有的 MWControls。
MWControls 包含
- MWTreeView:一个多选- TreeView控件 (- MultiSelect,多选)
- MWScrollLabel:一个标签控件,当鼠标悬停在其上方时,如果文本不适合显示,它会来回滚动文本。
- MWScrollLabel控件还支持以不同方向显示文本:- Normal(正常)、- UpsideDown(倒置)、- Left(向左)和- Right(向右)。
- MWLabel:一个- Label控件,它使用- StringFormat.GenericTypographic,这意味着文本旁边不需要大片空白区域。
- MWLabel控件还支持以不同方向显示文本:- Normal(正常)、- UpsideDown(倒置)、- Left(向左)和- Right(向右)。
使用的编码技术
MWTreeView
- TreeNode的多选功能。
- 重写了 CancelEventArgs,以便可以设置AfterXXX和BeforeXXX事件处理程序,允许程序员取消设置属性。
MWScrollLabel
- 使用一个定时器进行滚动。
MWLabel 和 MWScrollLabel
- GDI+ 用于绘制所有内容(文本和图像)
- 当 Enabled属性设置为false时,文本会正确地呈现为禁用状态
- 使用继承自 UITypeEditor的图形化设计时编辑器来处理TextDir属性
全部
- 继承,包括重写事件处理程序,以及编程绕过父控件中隐藏的某些方法等事实
缺点
- MWLabel和- MWScrollLabel:未使用- UseMnemonic属性。(我本人不打算修复此问题。如果有人有解决方案,请告知我。)
- MWTreeView:当- HotTracking开启时,颜色不正确。(我可能不会自己修复此问题。如果有人有解决方案,请告知我。)
版本历史和更多关于控件的信息
版本 1.0.3.0
MWTreeView:
- MWTreeView控件支持正确的多选功能。我说正确,意思是比我见过的任何其他免费的(C# 或其他)都好。
- MultiSelect是- MWTreeView控件的一个属性,可以设置为以下值之一- NoMulti:多选已关闭。但其他所有功能仍然可用,因此它仍然比普通- TreeView控件工作得更好。
- Multi:自由无限制多选 - 可以选择任何- TreeNode。
- MultiSameBranchAndLevel:只能选择同一分支和同一级别的多个- TreeNode。
- MultiSameBranch:只能选择同一分支的多个- TreeNode。
- MultiSameLevel:只能选择同一级别的多个- TreeNode。
 
- 现在有几个键可以对 MWTreeView进行操作:Ctrl+A 选择所有TreeNode(根据MultiSelect属性施加的限制),等等,等等。
- 可以使用鼠标结合 Control、Shift 和 Alt 键来选择 TreeNode。
- 如果 MultiSelect属性设置为NoMulti以外的值,则根本不需要选择任何TreeNode,一旦选择了一个,就可以取消选择(按住 Control 键并单击鼠标)。
- 原始 TreeView控件的FullRowSelect属性似乎不起作用(如果我错了,请纠正我)。它现在已实现。
- 有大量的代码(仅 MWTreeView类就有 3400 多行),所以我猜这是一个(希望是个好)如何子类化一个控件并添加大量功能的示例。
版本 1.0.2.0
MWControlsTest
- 添加了 MWControlsTest项目,使得测试MWControls的所有功能变得非常容易。
- 添加到 MWControls的任何新控件都可以出现在一个新的TabPage上。
版本 1.0.1.0
MWScrollLabel
- MWScrollLabel是一个子类化的- Label控件,如果整个文本不适合显示,可以将其设置为来回滚动文本。我使用它的方式是在鼠标悬停在控件上时开始滚动。
- 有相当多的选项可以用来控制滚动。
- 请注意,MWScollLabel控件只在一行上显示其文本。这是故意的,并且与其滚动功能相结合,这正是实现此控件的根本原因。
版本 1.0.0.0
MWLabel
- 文本使用的 StringFormat可以设置为以下两个选项之一:GenericDefault和GenericTypographic。- GenericDefault:这是普通- Label控件使用的- StringFormat。
- GenericTypographic:此- StringFormat在测量字符串方面要精确得多。
 
- 使用 GenericTypographic选项(默认)意味着,如果文本右对齐,即使对于没有空格的长单词,它也会正确地右对齐。
- 文本方向可以设置- Normal:正常水平文本
- UpsideDown:倒置显示的水平文本
- Left:可读的垂直文本,需要将头向左倾斜
- Right:可读的垂直文本,需要将头向右倾斜
 
- 有一个选项可以显示图像(普通的 Image属性或来自ImageIndex属性的图像),图像可以显示在文本上方,或像普通Label控件一样显示在文本下方。
- 如果使用图像(普通的 Image属性或来自ImageIndex属性的图像),则图像将显示在靠近相应边缘的位置 - 而不是距离边缘的某个奇怪的任意距离。
免责声明
Mikael Wiberg 2003
请随意使用此代码,只要您不将其归功于自己。如果它用于商业项目或应用程序,请提及我的名字。如果您对这段代码感到满意,欢迎随意捐赠任何金额。 ;) 请自行承担使用此代码的风险。如果在使用过程中您的机器爆炸了 - 别怪我。
历史
- 2003 年 6 月 16 日:更新
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。


