0

ユーザーがテキストボックスに数値データのみを入力するように、テキストボックスのキープレスイベントを処理する必要があります。コードは正常に機能しており、以下に投稿していますが、懸念されるのは、同じテキストボックスが30個以上あることです。要件と私は30のテキストボックスのキープレスイベントに同じコードを書きたくないのですが、このコードをメソッドに記述してそのメソッドを呼び出すことはできません..この問題を解決して、ある場所でコードを記述し、テキストボックスのキープレスイベントなどで呼び出して、コードを標準に見せ、行を減らします。以下にコードを投稿します。

        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;
        }
4

1 に答える 1

1

もちろん、すべてのテキストボックスに1つのイベントハンドラーを使用できます

TextBox tb = new TextBox();
tb.KeyPress += tb_KeyPress;

TextBox tb2 = new TextBox();
tb2.KeyPress += tb_KeyPress;

  void 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;
    }
  }
于 2013-03-26T09:33:28.720 に答える