3

次のコードを使用して、ユーザーから数字のみを取得し、小数点を1つだけ取得しています。これは、 KeyPress Event でうまく機能しています。

if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
    e.Handled = true;
}

if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
{
    e.Handled = true;
}

ここで、10 進数/ドットの後の数字/桁を制限したい、つまり 35.25468 は、ドット/10 進数の後の数字/桁が 6 つしかないことを意味します。

私を更新してください!

4

6 に答える 6

5
private void price_tb_KeyPress(object sender, KeyPressEventArgs e)
        {

        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
        {
            e.Handled = true;
        }

        // only allow one decimal point
        if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
        {
            e.Handled = true;
        }

        if (!char.IsControl(e.KeyChar))
        {

        TextBox textBox = (TextBox)sender;

        if (textBox.Text.IndexOf('.') > -1 &&
                 textBox.Text.Substring(textBox.Text.IndexOf('.')).Length >= 3)
        {
            e.Handled = true;
        }

        }

    }

このコードが役に立ちます。小数点以下 1 桁と小数点以下 2 桁のみを使用し、それに応じて変更できます。

于 2011-09-21T01:56:05.710 に答える
0

keypressイベント、またはvalidateイベントで、小数点以下の文字数をカウントします。キーを押すと、それを抑制します。検証時に、余分な小数点以下の桁数を削除します。NumberFormatInfoから小数点文字を取得していることを確認してください。すべてのカルチャが「。」を使用しているわけではありません。フランスでは、小数点は実際にはコンマです

于 2011-08-31T15:15:31.000 に答える
0

キーを押したときに、文字列をフォーマットtextBox.Textし、フォーマットされた文字列に設定します。

TextBox.Text = String.Format("{0:N3"}", textBox.Text)

この特定の形式は、小数点以下第3位の数値を切り捨てます。

于 2011-08-31T15:23:27.570 に答える
0

textBox.SelectionLength == 0選択したテキストの変更を許可する必要がありました:

private void price_tb_KeyPress(object sender, KeyPressEventArgs e) {
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.') {
        e.Handled = true;
    }
    TextBox textBox = (TextBox)sender;
    // only allow one decimal point
    if (e.KeyChar == '.' && textBox.Text.IndexOf('.') > -1) {
        e.Handled = true;
    }
    if (!char.IsControl(e.KeyChar) && textBox.SelectionLength == 0) {
        if (textBox.Text.IndexOf('.') > -1 && textBox.Text.Substring(textBox.Text.IndexOf('.')).Length >= 3) {
            e.Handled = true;
        }
    }
}
于 2012-10-22T15:25:25.903 に答える
0

このような追加のチェックを追加できます

TextBox textBox = (TextBox) sender;

if (textBox.Text.IndexOf('.') > -1 &&
         textBox.Text.Substring(textBox.Text.IndexOf('.')).Length >=3)
{
    e.Handled = true;
}

サブストリングには「.」が含まれることに注意してください。したがって、チェックは>=3です。

于 2011-08-31T15:20:08.950 に答える