You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio 2019中遍历My.Settings并导出设置?

解决My.Settings导出为空的问题

问题根源

你当前代码遍历的My.Settings.PropertyValues集合,仅包含用户已修改过的设置项。如果所有设置都保持默认值,这个集合会是空的,导致生成的文件没有内容。

修正后的代码

要遍历所有设置(包括默认值未修改的项),应该改用My.Settings.Properties集合,再通过设置名称获取对应的值:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim sDialog As New SaveFileDialog()
    sDialog.DefaultExt = ".AppSettings"
    sDialog.Filter = "Application Settings (*.AppSettings)|*.AppSettings"

    If sDialog.ShowDialog() = DialogResult.OK Then
        Using sWriter As New StreamWriter(sDialog.FileName)
            ' 遍历所有设置项,包括未修改的默认值
            For Each setting As System.Configuration.SettingsProperty In My.Settings.Properties
                ' 获取设置值,处理空值避免NullReferenceException
                Dim settingValue As String = If(My.Settings(setting.Name) Is Nothing, "", My.Settings(setting.Name).ToString())
                sWriter.WriteLine($"{setting.Name},{settingValue}")
            Next
        End Using

        My.Settings.Save()
        MessageBox.Show("设置已保存到指定文件", "导出成功", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
End Sub

关键改进点

  • 替换遍历对象:从PropertyValues改为Properties,确保获取所有定义的设置项
  • 空值处理:用If运算符判断值是否为空,避免调用ToString()时抛出异常
  • 格式化优化:使用字符串插值$""让代码更简洁,同时修正了原代码中多余的空格问题

注意事项

  • 如果你的设置包含复杂类型(比如自定义对象),直接调用ToString()可能无法得到有用的序列化结果,需要额外处理序列化逻辑
  • 导入时要注意对应设置的类型,避免类型转换错误

内容的提问来源于stack exchange,提问作者JRDumont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:05:30