Keys.PageDown.ToString() returns Next

本文关键字:returns Next PageDown ToString Keys | 更新日期: 2023-09-27 18:33:44

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

有关很好的解释,请参阅此处。虽然很老了,但我认为现在可能已经做了一些事情来解决这个问题。

目前我可以看到两种选择;

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

这将为"PageUp"返回"Prior",为"PageDown"返回"PageDown"。

  1. e.KeyCode.ToString();
这将为"PageUp"

返回"PageUp",但为"PageDown"返回"next"。

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

Keys.PageDown.ToString() returns Next

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

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

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