0

私は現在、ヨーロッパの会社の計算プログラムを開発しています。彼らはメートル法を使用しており、デフォルトとして「、」を小数点記号として使用しています。

私のプログラムはさまざまなものを計算し、一部の計算は C#/WPF のテキスト ボックスからの TextChanged イベントによってトリガーされます。数日前、テキストボックスに数値を入力しても一部の計算で何も起こらなかったとユーザーが不満を言うまで、すべて正常に機能していました。エラーはありませんでしたし、結果ボックスに何も表示されませんでした (一部の計算について)。何らかの理由で、デフォルト値(私が設定)「0,05」のテキストボックスが表示されず、ボックスが空白であることがわかりました。しかし、さらに下には「0,5」の値が表示されていました(これも私が設定しました)。私はこれについて非常に混乱し、デバッグを開始し、これが発生する可能性のある原因を探しましたが、何も見つかりませんでした. しばらくして、彼が「地域と言語」の下の「小数点記号」を「,」から「」に変更したことに気付きました。に "。"。これは、米国のプログラムを動作させるために行われました。これを行わないと、そのプログラムは起動時にクラッシュするからです! それで、私はそれを持っていて、それを元に戻すと、すべてうまくいきました。しかし、ユーザーはこの設定で前後に切り替える必要がないため、これは望ましくありません。そのため、解決策を見つける必要があります。

「PreviewTextInput」に、それが数値であり、小数点記号が1つしか含まれていないことを確認するために作成されたメソッドがあります。これがどのように原因なのかわかりませんか、それともあなたですか?

private void CheckIsNumeric(TextCompositionEventArgs e, object sender)
    {
        int result;

        if (!(int.TryParse(e.Text, out result) || e.Text == ","))
        {
            e.Handled = true;
        }
        if (e.Text == "," && (sender as TextBox).Text.IndexOf(',') > -1)
            e.Handled = true;

    }

起動時に値「0,5」が存在するのに、「0,05」が「削除」され、すべてを台無しにする可能性が最も高いのはなぜですか? この問題を解決する方法はありますか。現在、地域と言語に応じてプログラム内の何かを変更することについて頭に浮かんでいるため、いくつかの新鮮なアイデアが必要です。

どんな助けでも大歓迎です。

アップデート:

地域と言語の「形式」の設定をスウェーデン語から英語に変更すると、「小数点記号」を使用しても問題なく動作します。「、」または「。」に設定すると、プログラムは同じように動作します。スウェーデン語を使用していて「.」があると機能しないのはなぜですか? 価値?

4

1 に答える 1