如何将DataGridView DataInd查看到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:

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
.

有帮助吗?

解决方案

You should use the PropertyGrid control? It will help with regard to supporting richer property types.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top