Question

Pour un projet, j'ai construit une colonne DataGridView personnalisée contenant les contrôles NumericUpDown. Il est mis en œuvre de manière similaire à la suggestion de Microsoft .

La colonne fonctionne bien sous Windows XP. Il accepte les chiffres et le séparateur décimal entrés. Sous Windows Vista, le problème étrange est que le contrôle accepte uniquement le séparateur décimal entré par le pavé numérique, mais pas par le bloc principal du clavier.

Je dois ajouter que je travaille avec les paramètres de culture allemande (Suisse) sous Windows Vista et que la configuration de clavier Allemande (Suisse) est activée. Le séparateur décimal en Suisse est.

Quelqu'un a une idée pour la raison et peut-être une solution? Merci beaucoup!

Michael

Modifier: J'ai trouvé la solution à mon problème.

  1. Pour clarifier un peu plus la situation. Le contrôle NumericUpDown que j'utilise implémente IDataGridViewEditingControl et hérite de NumericUpDown. En raison de IDataGridViewEditingControl, j'ai implémenté la méthode EditingControlWantsInputKey. Et lors de la mise en œuvre de cette méthode, j’ai trouvé mon erreur ou ce qui ne fonctionnait pas.

  2. Dans la méthode, j'ai inspecté les clés entrées et décidé si le contrôle devait le gérer. Mais pour le séparateur décimal, je n’attendais que Keys.Decimal . Dans mon cas spécial (mauvais), la clé ne peut pas être associée. Ce qui manquait, c’était aussi de chercher Keys.OemPeriod . Et ce fut la solution.

Était-ce utile?

La solution

Pouvez-vous s'il vous plaît coller votre code OnKeyDown et / ou OnKeyPress? Au moins le code de filtrage de clé approprié. Il sera plus facile de repérer tout problème.

BTW, j’utilise normalement des claviers anglais britannique et portugais brésilien, j’ai donc eu ma part de ces problèmes. Cela vous oblige à devenir un expert en localisation:)

Modifier : Oh, désolé, relisez et comprenez que vous utilisez le contrôle Stock NumericUpDown. Pouvez-vous m'indiquer le code de colonne afin que je puisse l'essayer ici? Les paramètres régionaux ne sont probablement pas définis pour le contrôle et vous devrez le faire manuellement à un moment donné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top