对于一个项目,我构建了一个包含 NumericUpDown 控件的自定义 DataGridView 列。它的实现类似于微软的建议
该列在 Windows XP 下运行良好。它接受输入的数字和小数分隔符。在 Windows Vista 下,我有一个奇怪的问题,即控件只接受由数字小键盘输入的小数分隔符,而不接受来自键盘主块的小数分隔符。
我必须补充一点,我在 Windows Vista 下使用德语(瑞士)文化设置,并且激活了德语(瑞士)键盘布局。瑞士的小数分隔符是 .
有人对原因有想法,也许有解决方案?非常感谢你!
迈克尔
编辑: 我找到了解决问题的方法。
稍微澄清一下情况。我使用的 NumericUpDown 控件实现了 IDataGridViewEditingControl 并继承自 NumericUpDown。由于 IDataGridViewEditingControl,我实现了 EditingControlWantsInputKey 方法。而在执行这个方法的过程中,我发现了我的错误或者出了什么问题。
在该方法中,我检查了输入的键并决定控件是否必须处理它。但是对于小数点分隔符,我只期望Keys.Decimal。在我的特殊(错误)情况下,密钥无法匹配。缺少的是也寻找Keys.OemPeriod。这就是解决方法。