StackOverFlowException:对于MS TextBox中的int 32,值太小或太大

时间:2016-11-30 10:12:54

标签: c# winforms textbox stack-overflow

我创建了一个带有MS TextBox控件的简单应用程序,并且已经对TextBox进行了DataBinding。如果我尝试将double值输入TextBox,那么我得到了

  

“StackOverFlowException:对于Int32,值太大或太小”。

这是我的代码:

Form1.cs的

DataBinding db = new DataBinding();
this.dataBindingBindingSource.DataSource = db;
this.textBox1.DataBindings.Add("Text", dataBindingBindingSource, "Number", true, DataSourceUpdateMode.OnPropertyChanged);

DataBinding.cs (我自己的课程)

class DataBinding : INotifyPropertyChanged
{
    private int number=4;
    public int Number
    {
        get
        {
            return number;
        }
        set
        {
            number = value;
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged()
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs("Number"));
        }
    }
}

有谁能告诉我,我们怎样才能克服这个例外?

1 个答案:

答案 0 :(得分:0)

您定义的Number属性属于int类型,但您在绑定文本框中输入的数字太小或太大,无法容纳int。因此,无法在Number属性中进行设置。因此,代码抛出异常。

您期望它做什么?我们无法告诉您如何解决它。一些可能的选择是:

  • 通过选择大于int的类型来增加字段/属性的位宽,从而确保可以表示更大的值
  • 处理异常并对用户输入的值进行舍入/截断,使其适合int
  • 添加验证代码(在尝试数据绑定之前运行),以防止用户输入的值太大而无法容纳int