我们如何将 datagridview 数据绑定到某些 My.Settings(用户范围)属性,以便用户可以编辑值?这必须是一个datagridview。我知道我们可以在带有文本框等的表单中绑定到 My.Settings,但在这种情况下,我们只希望它作为 datagridview 中的可编辑字符串列表。
当然,一些 My.Settings 条目可以有不同的数据类型,这会使事情复杂化,但通常我们只使用字符串和布尔值。
另外,假设用户知道他必须输入字符串“true”才能将布尔值设置为 true。不需要复选框列。
这是我们正在使用的(并且有效),只是在寻找更好,更精简的方法:
这是课程:
Public Class MySettingsMaint
...
然后我们有一个绑定列表(这可能是 yuk):
Private list As BindingList(Of BindingKeyValuePair)
这是datagridview绑定的内容:
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
更多 yuk 这里,保存回 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