C# winform 异常验证

.Net技术 码拜 6年前 (2015-05-10) 488次浏览 0个评论

C# winform  界面有许多TextBox控件,有些只能输入数字,有些只能输入汉字。
程序需要去验证只能输入数字的控件

方法1:将需要验证数字的控件 单独写一个if语句 
判断是否是数字,这样可行,但是控件太多 太麻烦了,需要写好多个IF语句

方法2:通过try  catch (FormatException ee) 可以捕获到这样的错,在异常中得到是那个控件发来的错误码(可行吗?)
因为控件的ID命名是有规则的,我可以在catch中弹出个框,让用户知道是那个文本框出错了。
这样方便多了。

能不能通过try  catch 来捕获
try{ }
catch (FormatException ee)
{
  问题是:在这里 怎样获取是那个文本框 触发的异常??
}
catch (Exception ddd)
{}

如果有其它解决方法也可以推荐一下

5分
1、将判断共同部分抽离成几个方法,然后只要if(判断A&&判断B&&判断C)类似这样就可以了
2、验证数据正确性通过catch exception?这个有点难以理解……至于你说如何获取是哪个抛出的,我们都不知道你这个异常是怎么出来的……
15分
1、只能输入数字文本框,使用正则表达式
2、文本框的Tag标记某个文本框只能输入数字,遍历窗体控件,当控件是TextBox的时候,获取其Tag值,根据值来分辨是否是只能输入数字的文本框
FormatException ee  这个异常肯定是数据不合法抛出的错误。   我还是想定位到这个录入的数据是那个控件录入的。

只要知道是那个控件就可以根据这个空间的ID 提示错误码,至于什么错误 ,操作人自己判断,程序只给他一个提示,是这个控件中的内容错了。

  for (int i = 0; i < this.CarInfoMain.Controls.Count; i++)
            {
                if (this.CarInfoMain.Controls[i].Tag != null &&
                    this.CarInfoMain.Controls[i].Tag.ToString() == “@@”)
                {
                    if (!string.IsNullOrEmpty(this.CarInfoMain.Controls[i].Text.Trim()))
                    {
                        if (Tool.CheckNumber(this.CarInfoMain.Controls[i].Text.Trim()))
                        {
                            Tip.SetBalloonCaption(this.CarInfoMain.Controls[i], “请填写数字类型”);
                            Tip.ShowBalloon(this.CarInfoMain.Controls[i]);
                            return;
                        }
                    }
                }
            }

已经解决,我把第一个TxtBox的Tag中添加一个标记,这样就达到效果了  哈哈


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# winform 异常验证
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!