对于一个项目,我构建了一个包含NumericUpDown控件的自定义DataGridView列。它的实现类似于 Microsoft 的建议。

该列在Windows XP下运行正常。它接受输入的数字和小数分隔符。 在Windows Vista下,我有一个奇怪的问题,即控件只接受数字小键盘输入的小数点分隔符,但不接受键盘主控块输入的小数点分隔符。

我必须补充一点,我在Windows Vista下使用德语(瑞士)文化设置,并激活德语(瑞士)键盘布局。瑞士的小数分隔符是。

有人知道原因并且可能是解决方案吗?非常感谢你!

迈克尔

修改 我找到了解决问题的方法。

  1. 稍微澄清一下情况。我使用的NumericUpDown控件实现了IDataGridViewEditingControl并继承自NumericUpDown。因为IDataGridViewEditingControl我实现了EditingControlWantsInputKey方法。在实施这种方法时,我发现了我的错误或出了什么问题。

  2. 在方法中,我检查了输入的键,并决定控件是否必须处理它。但对于小数分隔符,我只期望 Keys.Decimal 。在我的特殊(错误)情况下,密钥无法匹配。缺少的是寻找 Keys.OemPeriod 。这就是解决方法。

有帮助吗?

解决方案

您可以粘贴OnKeyDown和/或OnKeyPress代码吗?至少相关的密钥过滤代码。它会更容易发现任何问题。

顺便说一下,我通常使用英式英语和巴西葡萄牙语键盘,所以我已经分享了这些问题。这种迫使你成为本地化专家:)

编辑:哦,对不起,只需重新阅读并了解您正在使用库存NumericUpDown控件。你能指出我的列代码,所以我可以在这里试试吗?可能没有为控件设置区域设置,您必须在某个时候手动执行此操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top