文本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 日:更新
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。