カスタマイズされたDataGridView列は、Windows Vistaで入力された小数点区切り文字を受け入れません
-
03-07-2019 - |
質問
プロジェクトでは、NumericUpDownコントロールを含むカスタムDataGridView列を作成しました。 Microsoft からの提案と同様に実装されます。
この列はWindows XPで正常に機能します。入力された数字と小数点記号を受け入れます。 Windows Vistaでは、コントロールがキーボードのメインブロックからではなく、数値キーパッドによって入力された小数点記号のみを受け入れるという奇妙な問題があります。
Windows Vistaでドイツ語(スイス)のカルチャ設定を操作し、ドイツ語(スイス)のキーボードレイアウトがアクティブになっていることを追加する必要があります。スイスの小数点記号は。
です。誰かが理由とおそらく解決策のアイデアを持っていますか?ありがとうございました!
マイケル
編集: 問題の解決策を見つけました。
-
状況をもう少し明確にするため。私が使用するNumericUpDownコントロールはIDataGridViewEditingControlを実装し、NumericUpDownを継承します。 IDataGridViewEditingControlのため、EditingControlWantsInputKeyメソッドを実装します。そして、このメソッドの実装で、自分の間違いや何が間違っているのかを見つけました。
-
メソッドでは、入力したキーを検査し、コントロールがそれを処理する必要があるかどうかを判断しました。しかし、小数点記号については Keys.Decimal のみを想定していました。私の特別な(間違った)場合、キーを一致させることができませんでした。欠けていたのは、 Keys.OemPeriod も探すことでした。それが修正されました。
解決
OnKeyDownおよび/またはOnKeyPressコードを貼り付けてください。少なくとも関連するキーフィルタリングコード。問題を見つけやすくなります。
ところで、私は通常イギリス英語とブラジルポルトガル語の両方のキーボードを使用しているので、これらの問題を共有しました。そのようなことは、あなたがローカリゼーションの専門家になることを余儀なくされます:)
編集:ああ、すみません、再読して、ストックNumericUpDownコントロールを使用していることを理解してください。ここで試してみることができるように、列コードを指摘してもらえますか?おそらくロケールがコントロールに設定されていないため、ある時点で手動で設定する必要があります。