我發現了很多閃避此主題的帖子,但實際上沒有解決這種情況。當SelectedItem爲空時,對象綁定到Winforms組合框失敗
我有綁定到List<State>
組合框,其中國家是具有縮寫和Name屬性業務對象:
this._stateComboBox.DataSource = ((Address)this._addressBindingSource.DataSource).States;
this._stateComboBox.DisplayMember = "Abbreviation";
this._stateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedItem", this._addressBindingSource, "State"));
最初的組合框顯示空白,因爲沒有國家被選中。如果我標籤的組合框,並嘗試選項卡那樣,是的SelectedItem空,但我得到一個異常:
Object of type 'System.DBNull' cannot be converted to type 'State'.
任何想法,爲什麼BindingSource的似乎走的是空的SelectedItem並使其System.DBNull試圖將它分配給Address.State屬性之前?在我的狀態設置器被調用之前,這個異常發生在OnValidating中。沒有調試器,它看起來像焦點卡在組合框。
我不希望添加一個空的狀態對象到我的數據源與空的縮寫和名稱。我該如何解決這個問題?
這對我來說並不完美,但它確實給了我一個提示,讓我有一個解決方法: 當我創建Binding對象時,我現在設置DataSourceNullValue = null。雖然這可以讓我繞過異常,但不幸的是,我不能提交null的值。換句話說,如果我清除了我的控件的顯示值,則在驗證期間從綁定對象中檢索非null屬性值,而不是將綁定對象屬性設置爲null。 – Hadster 2010-08-23 19:28:38
我一直在掙扎幾個小時,直到我找到這篇文章。謝謝! – 2012-12-27 22:31:01
這可能是一個解決方法,但我想知道實際問題的答案。爲什麼會發生這種情況,null變成了DBNull,更重要的是如何阻止這種情況發生? – 2017-01-18 14:03:05