Windows窗体按钮:图像还是图像列表+图像索引

本文关键字:图像 列表 索引 按钮 Windows 窗体 | 更新日期: 2023-09-27 18:04:09

上下文

在C#窗体项目中,有两种方法可以让按钮显示图像:

  • 设置ButtonBase。图像
  • 设置ButtonBase。ImageList,然后使用ButtonBase在该集合中选择一个图像。ImageIndex属性

问题

  • 为什么有两种解决方案?我怀疑ImageList是为了接近底层的Win32软件层API
  • 对于按钮,有什么理由喜欢其中一个而不是另一个吗?(对于其他一些控件,您可能别无选择。(

Windows窗体按钮:图像还是图像列表+图像索引

除非有人有更好的理由,否则我会说:只做尊重简单性和良好实践的事情,比如"不要重复自己"。

支持的论点或ImageList

  • 对于从Visual Studio设计器中设置的小型图像集合,它提供了一个ImageList编辑器来指导您,并将相关图像保存在源代码中,而不是单独维护集合
  • 如果其他控件需要你维护ImageList,你已经付出了代价,你也可以将其用于按钮

赞成的论点或图像

当你有选择:

ImageList案例

  • ImageList需要您以某种方式显式或隐式地管理图像(整数或字符串——字符串键控有问题?(的索引
  • 编译器无论如何都无法检查索引或字符串是否被误用

Image案例

  • 您可能不需要管理集合。可以使用单个对象在"图像"特性中进行设置
  • 即使是在你需要收藏的情况下也是更好的。您可以使用所需的任何键类型(例如Dictionary(对集合进行索引。如果使用Enum对集合进行索引,编译器可以在编译时进行检查,并在编写源代码时帮助您(Intellisense(

底线

我更喜欢Image选项,如果需要的话,我会使用Enum来处理我自己的集合,但我会将其命名为个人偏好。