0

VB2010。我正在尝试创建一个例程,它将所有设置加载到一个可能包含 50 个控件的表单中。第一种情况它加载所有用户定义的设置。第二种情况会加载所有应用默认设置。我最近发现我下面的例程将不起作用,因为两个设置类是相同的。

Private Sub LoadSettingsIntoControls(stsType As Integer)
    Dim stsClass As My.MySettings
    Select Case stsType 
        Case 0 ' user-defined
            stsClass = My.Settings
        Case 1 'app default 
            stsClass = My.MySettings.Default 'this is the same as My.Settings
        Case Else
            Throw New Exception("Invalid settings type.")
    End Select

    txtTmpDir.Text = stsClass.TempDir
    txtDataPath.Text = stsClass.DataPath

    '<about 50 more controls> 
End Sub

我还发现要获得应用程序默认值的设置,我需要类似的东西

    My.Settings.PropertyValues("TempDir").Property.DefaultValue

我一直在尝试将用户定义和应用程序默认设置打包到一个例程中,但一直未能做到。我想要的是一些不需要维护的东西,以防我更改设置变量名称。我一直在查看文档和示例,但没有发现任何可靠的东西。有什么建议么?

4

1 回答 1

0

您应该使用前缀定义所有默认属性(例如:def_TempDir)然后您可以执行以下操作:

Enum EN_PropertyType
    User
    Application
End Enum

Sub LoadSettingsIntoControls(typ As EN_PropertyType)
    For Each ctl In Me.Controls
        If ctl.GetType = (New TextBox).GetType Then
            Dim SettingName As String = ""
            Select Case typ
                Case EN_PropertyType.Application
                    SettingName = "def_" & Mid(ctl.name, 4)
                Case EN_PropertyType.User
                    SettingName = Mid(ctl.name, 4)
            End Select
            ctl.Text = My.Settings.Item(SettingName)
        End If
    Next
End Sub
于 2013-11-10T14:39:40.017 回答