C#中的文本控件,例如我的文本框要求输入0~1之间的小数,怎样判断数据类型正确并且范围也正确呢?

解决方案 »

  1.   

    简单但是粗鲁的方法就是
    try
    {
      Double value Double.Parse(edtValue.Text);
      if (value < 0 || value >= 1)
        MessageBox.Show("必须是0~1之间的小数!");
    }
    catch
    {
      MessageBox.Show("必须是0~1之间的小数!");");
    }
      

  2.   

    RangeValidator控件.Type設爲Double,MininumValue設爲0 ,MaxnumValue設爲1,ControlToValidate設爲你要驗證的textbox.
    這是客戶端驗證,不需提交服務器.
      

  3.   

    用DEV的TEXTEDIT也可以实现,方法同上
      

  4.   

    to HaoTianWJ(昊天罔极) 
    我是中國大陸人,業務是面對香港和台灣人的,必須用繁體字,經常切換太蔴煩了
    難道你認爲香港人和台灣人都不是中國人???
    我打的又不是big5編碼.
      

  5.   

    我是楼主!
    嗯,XDvlper(XDeveloper)的粗鲁的方法也行,不过我有好几十个这样的控件需要验证,确实工作量不小。
    RangeValidator控件似乎不错,看看。
      

  6.   

    不过用RangeValidator的时候它都要提交页面
    用javascript正则表达式就不用这么麻烦
      

  7.   

    不知道RangeValidator是否支持c#WindowsForms编程,它好像是web控件呀。“正则”。听起来不错,但是不知对于我这样的新手来说是不是很难。
      

  8.   

    XDvlper(XDeveloper)的粗鲁的方法的粗鲁的方法行吗?它好像只能验证是不是超出了范围,如果输入了其他类型的数据呢?比如“abc”,或者“!#$”,类型的错误他也能检查出来吗?
      

  9.   

    我不知道在VS2005中能不能在Win32程序中有没有RangeValidator用, VS2003好像是不行的
    用Regex检查太麻烦了
    还不如就把我那个粗鲁的办法写成函数传入控件或者字符串就可以了
    private void CheckText(TextBox textbox)
    {
    try
    {
      Double value Double.Parse(textbox.Text);
      if (value < 0 || value >= 1)
        MessageBox.Show("必须是0~1之间的小数!");
    }
    catch
    {
      MessageBox.Show("必须是0~1之间的小数!");");
    }
    }
    或者
    private void CheckText(string text)
    {
    try
    {
      Double value Double.Parse(text);
      if (value < 0 || value >= 1)
        MessageBox.Show("必须是0~1之间的小数!");
    }
    catch
    {
      MessageBox.Show("必须是0~1之间的小数!");");
    }
    }
      

  10.   

    提供了一种errorprovider的控件阿,可以自动判断输入数据的合法性
    如果有很多控件需要判断,可以只声明一个errorprovider,在控件事件触发时候调用iconlocation,然后调用seterror方法private void txtAge_Validating(object sender,System.ComponentModel.CancelEvents e){
    if(txtAge.TextLength>0&&Convert.ToInt32(txtAge.Text)>70){
    errMain.SetIconAlignment((control)sender,ErrorIconAlignment.MiddleRight);
    errMain.SetError((Control)sender,"age must be less 70.");
    e.Cancel=true;
    else{
    errMain.SetError((Control)sender."");
    }
    }
    }