VB.NET一个加载应用程序和默认设置的功能

时间:2013-11-10 04:25:08

标签: vb.net settings default user-defined my.settings

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

我一直在尝试将用户定义和应用默认设置都包含在一个例程中但未能这样做。在我更改设置变量名称的情况下,我想要的是需要很少维护的东西。我一直在看文档和样本,但没有找到任何可靠的东西。有什么建议吗?

1 个答案:

答案 0 :(得分: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