我已经阅读了一些关于这个问题的文章。基本上,PageDown和PageUp分别链接到Next和Prior,以实现向后兼容性。这个问题是没有可靠的方法来获得所需的值(至少没有我能看到的)。
有关详细说明,请参阅here。虽然很古老,但我认为现在可能已经做了一些事情来解决这个问题。
目前我可以看到两种选择;
Enum.GetNames(typeof (Keys)).GetValue(e.KeyValue);
这将为“PageUp”返回“Prior”,但为“PageDown”返回“PageDown”。
e.KeyCode.ToString();
这会为“PageUp”返回“PageUp”,但为“PageDown”返回“Next”。
我可以手动处理它,但如果有另一个这样的实例怎么办? 有没有人有更好的解决方案?
答案 0 :(得分:1)
也许最好的办法是创建一个查找表来翻译枚举值。
您可以使用字典实现查找表以将枚举值映射到字符串,如果字典不包含枚举值,则返回Enum.ToString()以获取值。这样,您只需要将例外(例如PageUp和PageDown)添加到字典中。
(请注意,如果您要向用户显示这些字符串并且您想要将字符串国际化,则可能需要为大多数字符串添加翻译的条目。)