我已经阅读了有关此问题的几篇文章。基本上,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)添加到字典中。

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

09-06 01:45