我想问一下,我做了一个textBox,想在输入的时候验证数据,只允许输入正负数字,或者允许输入月份
例如:"12m"。可是我做的程序有问题它可以在输入"12m"后不让再输入"m",可是还可以输入数字,我想让整个文本框里只有一个"m"且为最后一位。或者只允许输入数字。不知如何判断本人代码(刚开始学,程序不好请多见谅,省略keypress时间)
Edit edt=(Edit)sender;
if((edt.Text.IndexOf("/")==-1)&&(edt.Text!=string.Empty))
{
if(edt.Text.IndexOf("m")==0)
{
    edt.Text=string.Empty;
}

if(edt.Text.IndexOf("m")!=edt.Text.LastIndexOf("m"))
{
    string temp1="+-m";
    if(edt.Text.IndexOf("-")>=0)
{
    edt.Text="-"+edt.Text.Trim(temp1.ToCharArray())+"m";
}
else
{
    edt.Text=edt.Text.Trim(temp1.ToCharArray())+"m";
}
edt.SelectionStart=edt.Text.Length;
}

if((edt.Text.LastIndexOf("+")>0)&&(edt.Text!="+"))
{
string temp="+-";
edt.Text="+"+edt.Text.Trim(temp.ToCharArray());
edt.SelectionStart=edt.Text.Length;
}
if((edt.Text.LastIndexOf("-")>0)&&(edt.Text!="-"))
{
string temp="-+";
edt.Text="-"+edt.Text.Trim(temp.ToCharArray());
edt.SelectionStart=edt.Text.Length;
}
}
}

解决方案 »

  1.   

    private void textBox1_TextChanged(object sender, EventArgs e)
            {
                TextBox txt = sender as TextBox;
                string p = @"^[+-]?\d*m?$";
                Regex reg = new Regex(p, RegexOptions.IgnoreCase);
                Match m = reg.Match(txt.Text);
                txt.Text = m.Value;
                
            }
      

  2.   

    RegularExpressionValidator控件
    ValidationExpression=([+-]?[0-9]+)|([0-9]m)$
    ControlToValidate="你的txt控件名字"多看看msdn