Для проекта я построил собственный столбец DataGridView, содержащий элементы NumericUpDown. Он реализован аналогично предложению от MicrosoftНастроенный столбец DataGridView не принимает введенный десятичный разделитель под Windows Vista
Эта колонка отлично работает под Windows XP. Он принимает введенные цифры и десятичный разделитель. В Windows Vista у меня есть странная проблема, что элемент управления принимает только десятичный разделитель, введенный цифровой клавиатурой, но не из основного блока клавиатуры.
Я должен добавить, что я работаю с настройками культуры Германии (Швейцария) под Windows Vista и активирована раскладка клавиатуры для Германии (Швейцария). Десятичный разделитель в Швейцарии.
У кого-то есть идея по причине и, возможно, решение? Большое спасибо!
Майкл
Edit: Я нашел решение моей проблемы.
Чтобы уточнить ситуацию немного больше. Элемент NumericUpDown, который я использую, реализует IDataGridViewEditingControl и наследует от NumericUpDown. Из-за IDataGridViewEditingControl я реализую метод EditingControlWantsInputKey. И в реализации этого метода я нашел свою ошибку или что пошло не так.
В этом методе я проверил введенные ключи и решил, должен ли контроль обрабатывать его. Но для десятичного разделителя я ожидал только Keys.Decimal. В моем специальном (неправильном) случае ключ не мог быть сопоставлен. То, чего не хватало, было искать Keys.OemPeriod тоже. И это было исправление.
Большое спасибо за помощь! Я нашел ответственный код и исправил его (см. Отредактированную часть в вопросе). – Mil 2008-10-01 13:27:34