2008-10-01 2 views
0

Для проекта я построил собственный столбец DataGridView, содержащий элементы NumericUpDown. Он реализован аналогично предложению от MicrosoftНастроенный столбец DataGridView не принимает введенный десятичный разделитель под Windows Vista

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

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

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

Майкл

Edit: Я нашел решение моей проблемы.

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

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

ответ

0

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

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

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

+0

Большое спасибо за помощь! Я нашел ответственный код и исправил его (см. Отредактированную часть в вопросе). – Mil 2008-10-01 13:27:34

Смежные вопросы