如何在C#中查找窗体内所有的文本框,并且让一部分的文本框只能输入数字?
比如有一个窗体内有文本框还有其他的控件   我是怎么找出这些文本框 
找到后让其中的一部分的文本框只能输数字?比如找到了 4个文本框  我让其中的2 个文本框只能输入数字?

解决方案 »

  1.   

    foreach(TextBox txt in this.Controls)//遍历所有在窗体内的textbox
    {
    Regex rx = new Regex(@"^\d*$");//匹配数字
    if (!rx.IsMatch(textBox1.Text.Trim()) || !rx.IsMatch(textBox2.Text.Trim()))
        //do what u want to do here.
    }
      

  2.   

    public void InitTextBox(Control ctrl)
            {
                foreach (Control c in ctrl.Controls)
                {
                    TextBox tb = c as TextBox;
                    if (tb != null)  //按照你的要求判断那个TextBox需要只输入数字。
                    {
                        //tb.PreviewKeyDown += new PreviewKeyDownEventHandler(tb_PreviewKeyDown);
                        tb.KeyDown += new KeyEventHandler(c_KeyDown);
                    }
                    if (c.Controls.Count > 0)
                        InitTextBox(c);
                }
            }        private void c_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyData < Keys.D0 || e.KeyData > Keys.D9) //这里对数字键相应,如果需要小数点和退格需要再放宽条件。
                    e.SuppressKeyPress = true;
            }
      

  3.   

    //通过API可以实现只让输入数字
            [DllImport("User32.dll")]
            static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
            [DllImport("User32.dll")]
            static extern int GetWindowLong(IntPtr hWnd, int nIndex);
            public const int GWL_STYLE = -16;
            public const int ES_NUMBER = 0x2000;
            private void button1_Click(object sender, EventArgs e)
            {
                  SetWindowLong(textBox1.Handle, GWL_STYLE,
                      GetWindowLong(textBox1.Handle, GWL_STYLE) | ES_NUMBER);
            }
      

  4.   

    查找可以对Control.Controls集合进行遍历
    并通过TextBox tbx = control as TextBox来判断是否为TextBox.
    //处理文本框中内容,只能输入数字
    private void wz_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if ( e.KeyChar > (char)47 && e.KeyChar < (char)58 || e.KeyChar ==(char)8 ||e.KeyChar==(char)46)
    {
    e.Handled = false;
    }
    else
    {
    e.Handled = true;
    }
    }