我的VS2013 VB应用程序当前将设置保存到注册表中,并且它已经发展到了困扰着我的地步。所以我想将设置(字符串)保存到文件。奖励是他们可以在网络上并被多个用户使用。可能有数百甚至数千行。什么是首选格式?旧的INI,CSV,XML?就我所知,这种情况下Settings文件似乎不是一个好选择。最有效的保存自定义设置的方法
0
A
回答
0
我强烈建议创建一个类的对象并将序列化用于.NET应用程序的XML。它很容易实现,完全支持,您可以将设置从一台计算机导入和导出到另一台计算机。您甚至可以设置您的应用程序以准备来自网络的设置。此外,它将使未来的编程/升级更容易。
我在这里列出一个工作示例(测试)。该代码自2012年起开始使用,并且适用于企业级应用程序。
注意:我只为演示添加了一个“设置项目”,以便您自行添加。
第一:设置或选项类:
Imports System.Xml.Serialization
Imports System.IO
<Serializable()> _
Public Class Options
Public KEYS_USE_LISTS As Boolean
Public Sub New()
KEYS_USE_LISTS = True
End Sub
#Region "Methods"
Public Sub Save(ByVal Path As String)
Try
Dim _XMLSerilizer As New XmlSerializer(GetType(Options))
Dim _StreamWriter As New StreamWriter(Path)
_XMLSerilizer.Serialize(_StreamWriter, Me)
_StreamWriter.Close()
Catch ex As Exception
MsgBox("Error saving database setting." & vbCrLf & "Internal Error: " & ex.Message)
End Try
End Sub
Public Function DoLoad(ByVal Path As String) As Options
Dim _Opt As New Options
Try
If IO.File.Exists(Path) Then
Dim _XMLSerilizer As New XmlSerializer(GetType(Options))
Dim _FileStream As New FileStream(Path, FileMode.Open)
_Opt = DirectCast(_XMLSerilizer.Deserialize(_FileStream), Options)
_FileStream.Close()
End If
Catch ex As Exception
MsgBox("Error loading database setting." & vbCrLf & "Internal Error: " & ex.Message)
End Try
Return _Opt
End Function
#End Region
End Class
二:使用它通过接口(的WinForms例如)
Public Class frmOptions
Public _options As New Options
Private Sub frmOptions_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If IO.File.Exists(Application.StartupPath & "/_Options.opt") Then
_options = _options.DoLoad(Application.StartupPath & "/_Options.opt")
End If
chkUseList.Checked = _options.KEYS_USE_LISTS
End Sub
Private Sub btnOk_Click(sender As Object, e As EventArgs) Handles btnOk.Click
If IO.File.Exists(Application.StartupPath & "/_Options.opt") Then
_options = _options.DoLoad(Application.StartupPath & "/_Options.opt")
End If
_options.KEYS_USE_LISTS = chkUseList.Checked
_options.Save(Application.StartupPath & "/_Options.opt")
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub
End Class
+2
你为什么在变量名前加上下划线?这违背了VB.NET的命名约定(特别是'Public'!)。此外,而不是'Dim _StreamWriter ...'和'Dim _FileStream ...'把它们放在[**'使用'块**](https://docs.microsoft.com/en-us/dotnet/visual - 基本/语言参考/语句/使用语句)。 –
+0
有效评论,Thanx! –
相关问题
- 1. wp_customize-自定义设置不保存
- 2. Django自定义保存方法
- 3. ViewState自定义保存方法 - 有可能吗?在JSF的ViewState
- 4. 扩展Spring的配置保存自定义XML设置
- 5. OpenCart 2.3.0.2无法保存自定义模块设置
- 6. 以最有效的内存方式循环访问自定义对象的NSMutableArray
- 7. 保存等距游戏数据的最有效方法
- 8. Rails - 保存多个参数的最有效方法?
- 9. 在自定义语法中修改变量的最有效方法?
- 10. 存储自定义类型的设置
- 11. 自定义设计方法
- 12. 为iPhone应用程序存储设置的最有效的替代方法
- 13. 有没有在EDM设计师2010中设置自定义复数的方法?
- 14. 在VB.net中保存设置的最简单方法是什么
- 15. 将自定义对象的ArrayList保存为用户设置
- 16. 这是自定义过滤器最有效的方式吗?
- 17. Django的inlineformset - 自定义的保存方法
- 18. 将自定义类型保存到移动设备上的文件的方法?
- 19. 自定义保存的ImageField
- 20. 使用纯javascript设置风格的最有效方法?
- 21. 在Ubuntu Server 10 LTS上设置MySQL的最有效方法?
- 22. 在Vim中编辑Django设置文件的最有效方法
- 23. Java脚本 - 设置输入字段值的最有效方法
- 24. 设置自定义订单状态为有效的付款
- 25. 任何更有效的自定义preg_replace函数的方法?
- 26. 解析类C定义字符串的最有效方法?
- 27. 找出自定义数据库服务器(PHP)最有效的方法
- 28. 保存自定义对象的状态 - 在onResume方法
- 29. 以设定的时间间隔执行方法的最有效方法?
- 30. 设置属性未定义的方法
*设置文件不会出现是一个好在这种情况下选项*为什么? – Plutonix
不知道将要保存的内容的全部范围是什么,它们在本地系统上,而不在网络上。 – Terabithia
我不知道第一部分是什么意思。目前还没有明确的问题需要解决,但是...... a)INI文件至少从2003年开始已经过时。 b)对*用户*设置使用* system *注册表一直是一个糟糕的主意。 c)现在可以将设置长时间设置为本地或漫游d)您也可以使用自定义设置提供程序,以便仍然可以使用IDE UI,但可以随意使用它。作为最后的手段,像你接受的答案 – Plutonix