在Windows Vista中,自定义的DataGridView列不接受输入的十进制分隔符

时间:2020-03-06 14:58:18  来源:igfitidea点击:

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

该列在Windows XP下可以正常工作。接受输入的数字和小数点分隔符。
在Windows Vista下,我有一个奇怪的问题,即该控件仅接受数字键盘输入的小数点分隔符,而不接受键盘主块输入的小数点分隔符。

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

有人有一个想法,也许是一个解决方案?非常感谢你!

麦可

编辑:
我找到了解决我问题的方法。

  • 为了澄清这种情况多一点。我使用的NumericUpDown控件实现IDataGridViewEditingControl并从NumericUpDown继承。由于IDataGridViewEditingControl,我实现了EditingControlWantsInputKey方法。在执行此方法时,我发现了自己的错误或者出了什么问题。
  • 在方法中,我检查了输入的键并确定控件是否必须处理它。但是对于十进制分隔符,我只期望Keys.Decimal。在我的特殊(错误)情况下,密钥无法匹配。缺少的是也要查找Keys.OemPeriod。那就解决了。

解决方案

我们能粘贴OnKeyDown和/或者OnKeyPress代码吗?至少是相关的键过滤代码。找出任何问题将变得更加容易。

顺便说一句,我通常同时使用英式英语和巴西葡萄牙语键盘,因此我也分享了这些问题。这种压力迫使我们成为本地化专家:)

编辑:哦,对不起,请重新阅读并了解我们正在使用股票NumericUpDown控件。我们能指出我列代码,以便在这里尝试吗?可能没有为控件设置语言环境,因此我们必须在某个时候手动进行设置。