要在一支既有的 Windows Forms(Windows 視窗程式)上,增加一個 TextBox 控制項,它有一個特殊的需求,就是在 TextBox 修改的文字不能與綁定的 DataMember 連動,簡單來說,就是做單向綁定(One-Way Binding)
。
一般我們新增進 TextBox.DataBindings
的 Binding,預設都是雙向綁定,也就是說在 TextBox 上修改文字,也會更新到 DataMember。
單向綁定
要做單向綁定,就是讓 TextBox 內的文字被修改時,不要更新到 DataMember,這個我們可以從 Binding
類別裡面有的一個屬性 DataSourceUpdateMode
去控制,將它設成 DataSourceUpdateMode.Never
即可。
OnValidation vs OnPropertyChanged
仔細觀察 DataSourceUpdateMode 這個列舉,會發現它還有兩個值,分別是:OnValidation
、OnPropertyChanged
,Binding.DataSourceUpdateMode 的預設值是 OnValidation,意思就是說 TextBox 內修改的文字,在驗證事件過後,才會更新到 DataMember。
這兩者在效果上的差異在於在 TextBox 上修改文字的同時,是否會即時同步更新被修改的文字到 DataMember? 底下是效果比較。