65.9K
CodeProject 正在变化。 阅读更多。
Home

带图标的可折叠分组框

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.40/5 (4投票s)

2009年5月18日

CPOL

3分钟阅读

viewsIcon

48790

downloadIcon

745

一个支持图标的可折叠 GroupBox。

CollapsedGrpBxWithIcon.JPG

引言

这个 GroupBox 可以折叠并支持使用多个图标,包括每个状态的嵌入图标,无论是全尺寸还是折叠状态。这是我在 CodeProject 上的第一篇文章,我觉得在这个网站上有这么多优秀的贡献者提供了示例,展示了如何去做,现在轮到我贡献一点了。

这个项目源于 CodeProject 上的两个项目

没有这两位作者,这篇文章和这个项目都不会存在。我将所有关于许可的安排都引用回他们发布的许可。请阅读他们的两篇文章,您将对代码中发生的事情有一个很好的理解。我觉得不应该在这里重复 - 毕竟,我只是在解释他们已经解释过的内容。此外,这会剥夺看到实际做了什么的乐趣,也可能剥夺学习的机会,而学习是这里的目的,所以这不是一件好事。

背景

当我阅读这些文章时,我发现它们都重写了 OnPaint 方法,但 CollapsibleGroupBox 缺少一件事,那就是它可以有一个空图标图像,或者仅仅只有一个图标图像:一个加号或一个减号。我想添加更多精彩的东西。全尺寸、折叠甚至鼠标悬停、鼠标按下等的花哨图标。我将图标嵌入为资源的一部分,以便它们可以作为标准图标轻松打包。虽然您也可以通过 Visual Studio 中的属性管理器添加它们,但它们有它们的默认值。这是一个您需要修复的短板 - 我总是默认 - 如果您只需要图标而没有文本,或者没有图标只有文本,这取决于您提供属性和逻辑来禁用或启用 GroupBox 上的文本/图标。实际上,这甚至可以做成横跨顶部的图像而不仅仅是一个图标,从而使控件更加花哨。

使用代码

本文中的代码是用 C# 编写的。如果您想要 VB NET,请使用其中一个免费的在线转换器,并让它教您关于 C# 或 VB.NET 的知识。这就是我学习 C# 的方式。很抱歉,我不是一个喂饭者。

为了使用附带的代码,您必须创建一个名为 CollapsibleGroupBox 的新项目文件。然后,将两个代码文件添加到项目中,此外,添加一个名为 resources 的资源文件,其中嵌入的图标被恰当地命名为 plus, minus 和 standard。编译项目。将自定义控件添加到您的工具箱,然后拖动到 Form - 您应该可以开始了。

关注点

我了解了一些关于 OnPaint 方法、Rectangle 方法以及从嵌入资源中获取对象的方法。修改原始代码并将我认为两个 GroupBox 中最好的部分组合成一个,只是稍微更好一点,这很有趣。

历史

这是第一个版本。当我有更多时间时,我将尝试发布整个项目。

© . All rights reserved.