Настроенный столбец DataGridView не принимает введенный десятичный разделитель в Windows Vista - PullRequest
0 голосов
/ 01 октября 2008

Для проекта я создал собственный столбец DataGridView, который содержит элементы управления NumericUpDown. Он реализован по аналогии с предложением Microsoft

Колонка отлично работает под Windows XP. Он принимает введенные цифры и десятичный разделитель. В Windows Vista возникает странная проблема: элемент управления принимает только десятичный разделитель, введенный цифровой клавиатурой, но не из основного блока клавиатуры.

Я должен добавить, что я работаю с немецкими (Швейцария) настройками культуры в Windows Vista и активирована раскладка клавиатуры для Германии (Швейцария). Десятичный разделитель в Швейцарии:

У кого-то есть идея по причине и, возможно, решение? Большое спасибо!

Michael

Изменить: Я нашел решение своей проблемы.

  1. Чтобы прояснить ситуацию немного больше. Элемент управления NumericUpDown, который я использую, реализует IDataGridViewEditingControl и наследуется от NumericUpDown. Из-за IDataGridViewEditingControl я реализую метод EditingControlWantsInputKey. И при реализации этого метода я обнаружил свою ошибку или что пошло не так.

  2. В методе я проверил введенные ключи и решил, должен ли контроль обрабатывать его. Но для десятичного разделителя я ожидал только Keys.Decimal . В моем особом (неправильном) случае не удалось найти ключ. Чего не хватало, так это искать Keys.OemPeriod . И это было исправлением.

1 Ответ

0 голосов
/ 01 октября 2008

Не могли бы вы вставить свой код OnKeyDown и / или OnKeyPress? По крайней мере, соответствующий код фильтрации ключей. Легче будет выявить любые проблемы.

Кстати, я обычно использую британскую английскую и бразильскую португальскую клавиатуры, поэтому у меня была своя доля этих проблем. Это заставляет вас стать экспертом по локализации:)

Редактировать : Извините, просто перечитайте и поняли, что вы используете стандартный элемент управления NumericUpDown. Можете ли вы указать мне код столбца, чтобы я мог попробовать его здесь? Возможно, языковой стандарт не настроен для элемента управления, и вам придется сделать это вручную в какой-то момент.

...