В формах окна vb.net visual studio 2013 я заметил, что при использовании флажка привязки установлен флажок (медленный, а иногда и ошибка во время выполнения) при использовании «checkstate» работает правильно.
Есть ли способ привязать флажок с отмеченным и не отмеченным только без нуля без проблем?
Изображение:

Образец кода:
Sub bindingTest(container As Control, sql As String, BindingSource1 As BindingSource, BindingNavigator1 As BindingNavigator)
Dim field As String
Dim str As String = ""
da = New SqlDataAdapter(sql, CSql.sqlDatabaseConnString)
ds = New DataSet()
da.Fill(ds)
BindingSource1.DataSource = ds.Tables(0)
BindingNavigator1.BindingSource = BindingSource1
For Each oc As Control In container.Controls
If (TypeOf (oc) Is CheckBox) Then
Dim oType As CheckBox
oType = CType(oc, CheckBox)
field = oType.Tag.ToString
oc.DataBindings.Clear()
If varcheckState = True Then
'' working fine
oType.DataBindings.Add(New Windows.Forms.Binding("checkstate", BindingSource1, field, True))
Else
''' slow and sometimes not working
oType.DataBindings.Add(New Windows.Forms.Binding("Checked", BindingSource1, field, False))
End If
End If
Next
End Sub
Что касается вопроса, каков тип данных столбцов, которые вы связываете, и допускают ли они значение NULL?
типы данных битовые, и да, они допускают значение NULL
Если они допускают значение NULL, то почему вы хотите связывать Checked, а не CheckState? Вы не хотите отличать NULL от False?
Я хочу, чтобы значение null отображалось как неотмеченное или ложное





Не связан с вашей проблемой, могу ли я порекомендовать три улучшения вашего кода? Во-первых, если вы собираетесь использовать только один
DataTableвDataSet, не используйтеDataSet. Просто создайтеDataTable. Во-вторых, вы можете избавиться от этого оператораIf, если напишете свой циклFor EachкакFor Each oType In container.Controls.OfType(Of CheckBox)(). В-третьих, нет необходимости использовать конструкторBinding, потому что методAddпринимает те же аргументы.