BingSource 出現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去就好~

This entry was posted in 電腦和網際網路. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s