【发布时间】:2012-03-06 22:24:29
【问题描述】:
我在一个 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)
然后我有其他代码可以在用户浏览列表中的记录时自动更改这些控件中的值。我已经请求添加一个简单的按钮,该按钮将禁用/重新启用这些控件的编辑。换句话说,启用后,用户或程序可以编辑控件,新值将保存在源数据集中。禁用后,控件仍应显示源数据集中的值,但用户和程序都应该能够更改这些值。
我查看了创建数据绑定的 BindingList(tablewrapper)和 BindingSource 对象的 AllowEdit 属性,但没有运气。
有没有办法在不更改每个控件或重置所有绑定的情况下将所有数据绑定更改为只读?
更新:
我尝试了@LarsTech 提供的解决方案,但由于围绕绑定设置方式的一些范围问题,我无法在不重新创建所有绑定的情况下修改更新模式。我决定简单地禁用所有以编程方式更改控件中值的代码并在按钮设置为禁用时禁用所有控件会更容易。
【问题讨论】:
-
修改视图而不是数据源。您可以将视图设为只读,并可以在关联的 .cs 文件中的 on_click 侦听器中更改该属性。
-
很遗憾,该数据集不在传统数据库中,因为它是地理信息系统中的空间数据集。我不确定在这种情况下我是否使用视图。
标签: vb.net winforms data-binding readonly