0

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

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

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

有人对原因有想法,也许有解决方案?非常感谢你!

迈克尔

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

  1. 稍微澄清一下情况。我使用的 NumericUpDown 控件实现了 IDataGridViewEditingControl 并继承自 NumericUpDown。由于 IDataGridViewEditingControl,我实现了 EditingControlWantsInputKey 方法。而在执行这个方法的过程中,我发现了我的错误或者出了什么问题。

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

4

1 回答 1

0

您能否粘贴您的 OnKeyDown 和/或 OnKeyPress 代码?至少是相关的密钥过滤代码。这将更容易发现任何问题。

顺便说一句,我通常同时使用英式英语和巴西葡萄牙语键盘,所以我遇到了这些问题。那种迫使你成为本地化专家:)

编辑:哦,对不起,只是重新阅读并理解您正在使用库存 NumericUpDown 控件。你能指出我的列代码,以便我可以在这里尝试吗?可能没有为控件设置语言环境,您必须在某些时候手动设置。

于 2008-10-01T11:18:53.193 回答