在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控件。我们能指出我列代码,以便在这里尝试吗?可能没有为控件设置语言环境,因此我们必须在某个时候手动进行设置。