none
如何限定textbox的输入内容 RRS feed

  • 问题

  • 比如说,我规定只能读入0-10的整数该怎么做,各位大牛帮帮忙。请问用属性访问器可以吗?还是用那个什么changed事件来判断?用console的toint32方法抛出异常行得通吗?

    2012年4月29日 13:12

答案

  • 用正则表达式,很简单的。

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }


            private void button1_Click(object sender, EventArgs e)
            {
                string p = @"^(0?[0-9]|1[0-0])$";
                Regex eg = new Regex(p);
                if (eg.IsMatch(textBox1.Text) == false)
                {
                    MessageBox.Show("输入有误");
                    textBox1.Focus();
                    textBox1.SelectAll();
                }
                else
                {
                    MessageBox.Show("合法");
                }
            }
        }
    }


    C#初学者!~~~

    • 已建议为答案 呆oO 2012年4月29日 16:22
    • 已标记为答案 Lie YouModerator 2012年5月9日 2:53
    2012年4月29日 16:22
  • 你可以尝试一下MaskedTextBox 设置它的mask 为number 就可以了。

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.maskedtextbox.aspx

    希望对您有所帮助。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us

    2012年5月2日 3:45
    版主
  • dear

    提供一个方法,扩充textBox的属性。

    http://www.dotblogs.com.tw/yc421206/archive/2012/03/17/70808.aspx

    判断键入数是否为数字,处理KeyPress事件

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    //法一
    if (Char.IsNumber(e.KeyChar))
    {
    e.Handled = false;
    }
    else
    {
    e.Handled = true;
    }
    //法二
    int key = (int)e.KeyChar;
    if (key >= 48 && key <= 57)
    {
    e.Handled = false;
    }
    else
    {
    e.Handled = true;
    }
    }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年5月2日 8:33

全部回复

  • 用正则表达式,很简单的。

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }


            private void button1_Click(object sender, EventArgs e)
            {
                string p = @"^(0?[0-9]|1[0-0])$";
                Regex eg = new Regex(p);
                if (eg.IsMatch(textBox1.Text) == false)
                {
                    MessageBox.Show("输入有误");
                    textBox1.Focus();
                    textBox1.SelectAll();
                }
                else
                {
                    MessageBox.Show("合法");
                }
            }
        }
    }


    C#初学者!~~~

    • 已建议为答案 呆oO 2012年4月29日 16:22
    • 已标记为答案 Lie YouModerator 2012年5月9日 2:53
    2012年4月29日 16:22
  • 你可以尝试一下MaskedTextBox 设置它的mask 为number 就可以了。

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.maskedtextbox.aspx

    希望对您有所帮助。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us

    2012年5月2日 3:45
    版主
  • dear

    提供一个方法,扩充textBox的属性。

    http://www.dotblogs.com.tw/yc421206/archive/2012/03/17/70808.aspx

    判断键入数是否为数字,处理KeyPress事件

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    //法一
    if (Char.IsNumber(e.KeyChar))
    {
    e.Handled = false;
    }
    else
    {
    e.Handled = true;
    }
    //法二
    int key = (int)e.KeyChar;
    if (key >= 48 && key <= 57)
    {
    e.Handled = false;
    }
    else
    {
    e.Handled = true;
    }
    }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年5月2日 8:33