将 My.Settings 绑定到数据网格视图的最佳方法,以便最终用户可以进行修改



如何将数据网格视图数据绑定到某些 My.Settings(用户范围)属性,以便用户可以编辑值?这必须是数据网格视图。我知道我们可以在带有文本框等的表单中绑定到 My.Settings,但在这种情况下,我们只想将其作为数据网格视图中的可编辑字符串列表。

当然,一些 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 在这里,保存回我的设置:

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

你应该使用 PropertyGrid 控件吗?这将有助于支持更丰富的属性类型。

最新更新