3

我已经阅读了一些关于这个问题的文章。为了向后兼容,基本上 PageDown 和 PageUp 分别链接到 Next 和 Prior 。这样做的问题是没有可靠的方法来获取想要的值(至少我看不到)。

请参阅此处以获得很好的解释。虽然很老,但我认为现在可能已经采取了一些措施来解决这个问题。

目前我可以看到两个选项;

  1. Enum.GetNames(typeof (Keys)).GetValue(e.KeyValue);

这将为“PageUp”返回“Prior”,但为“PageDown”返回“PageDown”。

  1. e.KeyCode.ToString();

这将为“PageUp”返回“PageUp”,但为“PageDown”返回“Next”。

我可以手动处理它,但如果有另一个这样的实例怎么办?有没有人有更好的解决方案?

4

1 回答 1

1

也许最好的办法是创建一个查找表来转换枚举值。

您可以使用字典实现查找表以将枚举值映射到字符串,如果字典不包含枚举值,则回退到 Enum.ToString() 以获取该值。这样,您只需将例外(例如 PageUp 和 PageDown)添加到字典中。

(请注意,如果您向用户显示这些字符串并且您希望将这些字符串国际化,您可能需要为大多数字符串添加翻译条目。)

于 2013-10-02T08:15:35.090 回答