数字のためのテキストボックスをマスキングだけでなく、文句を言わないバックスペースを受け入れます

StackOverflow https://stackoverflow.com/questions/1060821

  •  21-08-2019
  •  | 
  •  

質問

私は数字のみのために希望のテキストボックスを持っています。私は間違った番号をヒットした場合でも、私はそれを修正するためにバックスペースを傾けます。どのように私はバックスペースが動作できるようにすることができます。おかげ

    private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Char.IsNumber(e.KeyChar) != true)
        {
            e.Handled = true;
        }
    }
役に立ちましたか?

解決

あなたが同様に制御文字を許可するためのチェックを追加することができます:

if (Char.IsControl(e.KeyChar) != true && Char.IsNumber(e.KeyChar) != true)
{
    e.Handled = true;
}

更新:コードS上の人物-Bさんのコメントに反応して/彼は(私は個人的にこれを書くだろうかもある)次のスタイルを提案します:

if (!Char.IsControl(e.KeyChar) && !Char.IsNumber(e.KeyChar))
{
    e.Handled = true;
}

他のヒント

正解はあります:

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = !сhar.IsNumber(e.KeyChar) && (e.KeyChar != '\b');
}

また、TextChangedイベントを上書きすることができます:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    string text = (sender as TextBox).Text;

    StringBuilder builder = new StringBuilder(String.Empty);

    foreach (char character in text)
    {
        if (Char.IsDigit(character))
        {
            builder.Append(character);
        }
    }

    (sender as TextBox).Text = builder.ToString();
}

あなたはキャレット位置を設定するためのコードを追加しなければならないことに注意してください。

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!Char.IsNumber(e.KeyChar) && e.KeyCode != Keys.Back)
          e.Handled = True;
}

上記のわずかにクリーナーフォーマット:

 private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
 {
   e.Handled = !(Char.IsNumber(e.KeyChar) || (e.KeyChar==Keys.Back));
 }

私は次のことがうまく働きました。これは、バックスペースを可能にするための余分な例外を含め、矢印キーは、キーなどを削除します のみを許可する方法数値(0-9)のjQueryを使用してHTMLの入力ボックスでは

private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
    if (Char.IsDigit(e.KeyChar) || e.KeyChar == '\b')
    {
        // Allow Digits and BackSpace char
    }        
    else
    {
        e.Handled = true;
    }
}

リンクも参照してください:マスキングテキストボックスだけ小数点の小数点以下を受け入れるように/ 12209854# 12209854

あなたは、キープレスイベントで次のように使用することができます:

      private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!Char.IsDigit(e.KeyChar) & (e.KeyChar != 8)) e.Handled = true; 
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top