我在winform应用程序中有几个控件,我使用代码添加了数据绑定。
Dim tblWrapper As ObliqueQCAndSpliceTool.TableWrapper = New ObliqueQCAndSpliceTool.TableWrapper(tbl, idField.Name)
tblWrapper.UseCVDomains = True
bindSource = New BindingSource
bindSource.DataSource = tblWrapper
bindMgr = BindingContext(bindSource)
bindSource.SuspendBinding()
Dim idBinding As Binding = New Binding("Text", bindSource, idField.Name)
txtPointID.DataBindings.Add(idBinding)
然后我有其他代码可以在用户浏览列表中的记录时自动更改这些控件中的值。我有一个请求添加一个简单的按钮,该按钮将禁用/重新启用这些控件的编辑。换句话说,启用后,用户或程序可以编辑控件,新值将保存在源数据集中。禁用时,控件仍应显示源数据集中的值,但用户和程序应该能够更改这些值。
我已经查看了创建数据绑定的AllowEdit
(tablewrapper)和BindingList
对象的BindingSource
属性,但没有运气。
有没有办法在不更改每个控件或重置所有绑定的情况下将所有数据绑定更改为只读?
更新:
我尝试了@LarsTech提供的解决方案,但是由于围绕如何设置绑定的一些范围问题,我无法在不重新创建所有绑定的情况下修改更新模式。我决定简单地禁用以编程方式更改控件中值的所有代码,并在按钮设置为禁用时禁用所有控件。
答案 0 :(得分:0)
尝试指定DataSourceUpdateMode
:
Dim idBinding As New Binding("Text", bindSource, idField.Name, _
False, DataSourceUpdateMode.Never)
来自DataSourceUpdateMode Enumeration:
<强>从不:强>
数据源永远不会更新,输入控件的值不会被解析,验证或重新格式化。
您可以直接更改此内容:
idBinding.DataSourceUpdateMode = DataSourceUpdateMode.Never
或
idBinding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged