0

プロジェクトでは、NumericUpDown コントロールを含むカスタム DataGridView 列を作成しました。Microsoftからの提案と同様に実装されています

この列は、Windows XP で正常に動作します。入力された数字と小数点記号を受け入れます。Windows Vista では、コントロールが数値キーパッドによって入力された小数点記号のみを受け入れ、キーボードのメイン ブロックからは受け入れないという奇妙な問題があります。

Windows Vista でドイツ語 (スイス) のカルチャ設定を使用していて、ドイツ語 (スイス) のキーボード レイアウトが有効になっていることを付け加えておきます。スイスの小数点記号は です。

誰かがその理由とおそらく解決策について考えを持っていますか? どうもありがとうございました!

マイケル

編集: 問題の解決策を見つけました。

  1. 状況をもう少し明確にするために。私が使用する NumericUpDown コントロールは、IDataGridViewEditingControl を実装し、NumericUpDown から継承します。IDataGridViewEditingControl があるため、EditingControlWantsInputKey メソッドを実装します。そして、このメソッドの実装で、自分の間違いや何がうまくいかなかったのかを見つけました。

  2. メソッドでは、入力されたキーを検査し、コントロールがそれを処理する必要があるかどうかを判断しました。しかし、小数点記号については、Keys.Decimalのみを期待していました。私の特別な (間違った) ケースでは、キーを一致させることができませんでした。欠けていたのは、 Keys.OemPeriodも探すことでした。そして、それが修正でした。

4

1 に答える 1

0

OnKeyDown や OnKeyPress のコードを貼り付けていただけますか? 少なくとも関連するキー フィルタリング コード。あらゆる問題を発見しやすくなります。

ところで、私は通常、イギリス英語とブラジル ポルトガル語の両方のキーボードを使用しているため、これらの問題を共有しています。そのようなものは、ローカリゼーションの専門家になることを強制します:)

編集:ああ、申し訳ありませんが、読み直して、在庫のNumericUpDownコントロールを使用していることを理解してください。ここで試すことができるように、列のコードを教えてもらえますか? おそらくコントロールのロケールが設定されていないため、いずれ手動で設定する必要があります。

于 2008-10-01T11:18:53.193 に答える