【问题标题】:VB.NET one function to load app and default settingsVB.NET 一项加载应用程序和默认设置的功能
【发布时间】:2013-11-22 01:38:54
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您应该使用前缀定义所有默认属性(例如: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
    

    【讨论】:

    • 你能解释一下你的代码应该做什么吗?前缀位是一种不太正统的方法,但可能没问题(无论如何,您应该说明如此非正统方法的原因:没有任何属性可以解决这个问题吗?)。您正在考虑进一步的问题,其要点不完全清楚(循环控制);并且您正在使用旧的 VB6 函数 (Mid),因为它们使用的索引与 .NET 不同(.NET 中的所有索引都从零开始,这些函数从 1 开始),所以它们的使用非常不明智。
    • 我也不确定这个答案。您说“所有默认属性”,就好像它是一个单独的变量。通过查看“我的项目”的“设置”页面,变量具有名称、类型、范围和值(这是默认值)。默认属性没有特殊命名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2015-02-13
    • 2022-01-09
    相关资源
    最近更新 更多