vb.net使数据绑定为只读
我在winform应用程序中有几个控件,我使用代码添加了数据绑定vb.net使数据绑定为只读,vb.net,winforms,data-binding,readonly,Vb.net,Winforms,Data Binding,Readonly,我在winform应用程序中有几个控件,我使用代码添加了数据绑定 Dim tblWrapper As ObliqueQCAndSpliceTool.TableWrapper = New ObliqueQCAndSpliceTool.TableWrapper(tbl, idField.Name) tblWrapper.UseCVDomains = True bindSource = New BindingSource bindSource.DataSource = tblWrapper bind
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提供的解决方案,但是由于绑定设置的一些范围问题,我无法在不重新创建所有绑定的情况下修改更新模式。我决定简单地禁用以编程方式更改控件中值的所有代码,并在按钮设置为disabled(禁用)时禁用所有控件将更容易。尝试指定
DataSourceUpdateMode
:
Dim idBinding As New Binding("Text", bindSource, idField.Name, _
False, DataSourceUpdateMode.Never)
发件人:
从不:数据源永远不会更新,输入控件的值也不会被解析、验证或重新格式化 您可以直接更改此选项:
idBinding.DataSourceUpdateMode = DataSourceUpdateMode.Never
或
修改视图而不是数据源。您可以将视图设置为只读,并可以在关联的.cs文件中的单击侦听器中更改该属性。遗憾的是,该数据集不在传统数据库中,因为它是地理信息系统中的空间数据集。我不确定在这种情况下是否使用视图。我可以对一个将应用于窗体上所有控件的bindingsource执行此操作吗?还是我必须循环所有绑定的控件?@Brian我想你几乎必须这样做。我只是不知道如何从数据源本身做到这一点。我无法按照你的建议去做。我已经用更多的信息更新了我的帖子。谢谢你的帮助。
idBinding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged