C#中的转换溢出错误

时间:2014-07-27 12:56:09

标签: c# wpf database

我收到错误,我无法修复

我的字段只允许输入数字,最多可输入10位数字

这是检查数字的代码

char ch = e.KeyChar;
        if (!Char.IsDigit(ch) && ch != 8 && ch != 46)
        {
            e.Handled = true;
        }

但是当我尝试执行时,我收到此错误弹出消息

http://i.imgur.com/6Zy03YC.png?1

2 个答案:

答案 0 :(得分:2)

9,999,999,999超过int32最大值(即2,147,483,647。link

使用int64代替(int64最大值为:9,223,372,036,854,775,807。link

答案 1 :(得分:1)

您的问题可能与WPF无关。

由于您可能正在使用MS SQL,因此您可能需要查看ranges of integer types in MS SQL

它表示整数(int,int32)列的最大可能值为2,147,483,647,而您的值为9999999999,远远大于20亿。

您应该将列的数据类型更改为bigint

修改

此外,如果您的数据实体(查询)是手动创建的,那么您应该使用与SQL bigint类型对应的C#program Int64(long)类型。

关于WPF

虽然可以在代码隐藏事件处理中处理数据验证,但WPF的复杂性和此类方法的整体缺点可能会导致许多问题,因此我建议您将验证代码移至viewmodel类并使用一些标准WPF Validation techniques