Как мы можем привязать базу данных к некоторым свойствам My.Settings (пользовательская область), чтобы пользователь мог редактировать значения?Это должно быть к datagridview.Я знаю, что мы можем связать My.Settings в форме с текстовыми полями и т. Д., Но в этом случае мы просто хотим, чтобы это был список редактируемых строк в сетке данных.
Конечно, некоторые записи My.Settings могут иметьразличные типы данных, которые усложняют ситуацию, но обычно мы работаем только со строками и логическими значениями.
Также давайте предположим, что пользователь понимает, что он должен ввести строку "true", чтобы установить логическое значение в true.Колонка флажка не нужна.
Вот то, что мы используем (и это работает), просто ищем лучший, более простой способ:
вот класс:
Public Class MySettingsMaint
...
тогда у нас есть список связывания (это, вероятно, юк):
Private list As BindingList(Of BindingKeyValuePair)
вот что связывает сетка данных:
Public ReadOnly Property DataSource() As Object
Get
list = New BindingList(Of BindingKeyValuePair)
list.Add(New BindingKeyValuePair("PhoneExtension", My.Settings.PhoneExtension.ToString.ToLower))
list.Add(New BindingKeyValuePair("PhonePIN", My.Settings.PhonePIN.ToString.ToLower))
list.Add(New BindingKeyValuePair("PhoneEnabled", My.Settings.PhoneEnabled.ToString.ToLower))
Return From k In list Order By k.Key
Return list
End Get
End Property
...
Public Sub LoadGrid(ByVal grd As DataGridView) Implements
/some stuff here to create two DataGridViewColumns
/one bound to Key, the other bound to Setting
End Sub
больше юк здесь, чтобы сохранить обратно в My.Settings:
Public Sub Save() Implements IMaintainable.Save
My.Settings.PhoneExtension = (From x As BindingKeyValuePair In list Where x.Key = "PhoneExtension" Select x.Value.ToLower).ToList(0)
My.Settings.PhonePIN = (From x As BindingKeyValuePair In list Where x.Key = "PhonePIN" Select x.Value.ToLower).ToList(0)
My.Settings.PhoneEnabled = (From x As BindingKeyValuePair In list Where x.Key = "PhoneEnabled" Select x.Value.ToLower).ToList(0) = "true"
My.Settings.Save()
End Sub
приватный класс, требуемый вышеупомянутым классом:
Private Class BindingKeyValuePair
Sub New(ByVal k As String, ByVal v As String)
Key = k
Value = v
End Sub
Private _Key As String
Public Property Key() As String
/basic getsetter
End Property
Private _Value As String
Public Property Value() As String
/basic getsetter
End Property
End Class