BindingSource 出現Null,因為TextBox的Visible 改變了

 

最近在使用BindingSource,因為資料庫都需要有一個Key,所以我使用了一個TextBox當作Key的Bind的對象,然後新增的時候就把Key寫到 TextBoxKey裡面去,這樣最後再使用
BindingSource.EndEdit()時,就會寫到DataSet去了。

但也因為這個控制項是不必給使用者看到的,所以我將其Tag填為DebugControl,然後在使用者執行的時候再把這些tag為DebugControl的控制項隱藏起來。結果最近發生一個Bug,到了使用者手上的時候,無法新增,說key為null。可是我測試的環境都OK啊,後來發現是把TextBoxKey設為隱藏之後,在BindingSource.EndEdit() 時,Text屬性就被清掉了,如果我自己再把它顯示出來 TextBoxKey.Visible=true; 這樣子Text也會被清掉。

很懷疑為什麼TextBox會有這麼奇怪的設計,在Visible改變的時候清掉Text。為了解決,我就不隱藏這些DebugControl了,而是將其Left設成很大就好。

最後想想這樣設計不太對,應該是binding惹的禍,測試一下,果然如果有binding的話,Text屬性就會在重新顯示的時候被重新bind一次~

我設計的方式不對啊,那時候只是為了方便讓我對照資料庫的欄位,應該直接DataTable.NewRow,然後設定為Key之後再加到DataTable去就好~

留言

這個網誌中的熱門文章

好貴的東元冷氣維修--馬達啟動電容

台大醫院 婁培人 耳鼻喉科 就診

機車無法充電之整流器壞掉--$650