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