日期:2014-05-17  浏览次数:20784 次

各位懂的帮帮忙。。。
请问在C#中需要进行数字运算时,如何避免因输入字母或其他符号而造成的错误呢?本人小白,刚刚学,这个问题折腾一天了。。。

------解决方案--------------------

//1.TryParse
string inputS="文本框的值";
decimal dec;
if(decimal.TryParse(inputS,out dec))
{
   //转换成功
}else
{
   //转换失败
}

//TryParse 返回bool型 数据 判断是否转换成功。 成功的话 结果会 赋值给 传入的 out 参数

//2 正则匹配字符串 是否符合数学规范 百度上很多正则 - -。

------解决方案--------------------
一般情况用try+catch捕获异常吧。

try { 
      代码;

catch {
      返回错误提示;
}
------解决方案--------------------
        /// <summary>
        /// 验证是否为数字
        /// </summary>
        /// <param name="strNum"></param>
        /// <returns></returns>
        public static bool IsNumber(string strNum)
        {
            const string num = "^[0-9]*[1-9][0-9]*$"; //正整数 
            return Regex.IsMatch(strNum, num);
        }

一般使用正则表达式来验证输入的是不是数字
------解决方案--------------------
 
        //病床号只能输入数字
        private void txtValue_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = Key_PressMethod(e.KeyChar);
        }
         
        /// <summary>
        /// 控制TextBox中只能输入数字  8为删除健
        /// </summary>
        /// <param name="c">e.KeyChar</param>
        /// <returns></returns>
        public static bool Key_PressMethod(char c)
        {
            //阻止从键盘输入键   
            bool result = true;
            if ((c >= 48 && c <= 57) 
------解决方案--------------------
 c == 8)
            {
                result = false;
            }