2016-11-30 55 views
-1

我創建了一個簡單的應用程序,其中MS TextBox控件和DataBinding已完成到TextBox。如果我嘗試進入double值到TextBox,然後我得到了StackOverFlowException:對於MS TextBox中的int 32,值太小或太大

「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")); 
     } 
    } 
} 

誰能告訴我怎麼是否我們能克服這個例外嗎?

回答

0

您定義的Number屬性的類型爲int,但是您在綁定文本框中輸入的數字太小或太大,無法放入int。因此,它不能在Number屬性中設置。因此,代碼拋出一個異常。

你會期望它做什麼?我們無法告訴您如何解決這個問題。一些可能的選項是:

  • 增加通過選擇比int大的類型,從而保證較大的值可被表示
  • 處理異常和輪字段/屬性的位寬度/截斷由輸入的值用戶,使得它裝配到int
  • 添加驗證代碼,以防止用戶輸入一個值,該值過大,以適應成int
(這將數據綁定嘗試之前運行)
相關問題