vb.net делает привязки данных только для чтения - PullRequest
1 голос
/ 07 марта 2012

У меня есть несколько элементов управления в приложении 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 объектов BindingList (tablewrapper) и BindingSource, которые создают привязки данных, но не повезло.

Есть ли способ изменить все привязки данных только для чтения без изменения каждого элемента управления или сброса всех привязок?

UPDATE:

Я попробовал решение, предоставленное @LarsTech, но из-за некоторых проблем, связанных с настройкой привязок, я не смог изменить режим обновления без воссоздания всех привязок. Я решил, что будет проще просто отключить весь код, который программно изменяет значения в элементах управления, и отключить все элементы управления, когда кнопка отключена.

1 Ответ

0 голосов
/ 07 марта 2012

Попробуйте указать DataSourceUpdateMode:

Dim idBinding As New Binding("Text", bindSource, idField.Name, _
                             False, DataSourceUpdateMode.Never)

Из Перечисление DataSourceUpdateMode :

Никогда:
Данныеисточник никогда не обновляется, а значения, введенные в элемент управления, не анализируются, не проверяются и не переформатируются.

Вы можете изменить это напрямую:

idBinding.DataSourceUpdateMode = DataSourceUpdateMode.Never

или

idBinding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged
...