在其他地方声明文本框按键事件代码并调用它?

时间:2013-03-26 09:27:45

标签: c# .net winforms c#-4.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;
        }

1 个答案:

答案 0 :(得分: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;
    }
  }