Windows窗体按钮:图像或ImageList + ImageIndex?

时间:2014-05-20 14:16:02

标签: c# .net winforms

上下文

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

问题

  • 为什么有两个解决方案?我怀疑ImageList是否与基础Win32软件层API保持接近。
  • 对于按钮,有没有理由更喜欢一个而不是另一个? (对于其他一些控件,您可能没有任何选择。)

1 个答案:

答案 0 :(得分:1)

除非有人有更好的理由,否则我会说:只做尊重简单和良好做法,例如“不要重复自己”。

支持参数或ImageList

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

支持论证或图像

当你有选择时:

ImageList案例

  • ImageList需要您以某种方式管理图像的索引(整数或字符串 - 以及string keying is buggy ?),无论是显式还是隐式。
  • 编译器无法检查索引或字符串是否被滥用。

图像案例

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

底线

我喜欢Image选项并在需要时使用Enum处理我自己的收藏,但我会说出个人喜好。