VB.NET 序列化和保存
Posted
技术标签:
【中文标题】VB.NET 序列化和保存【英文标题】:VB.NET Serialization and saving 【发布时间】:2014-07-10 20:50:32 【问题描述】:我创建了一个表单,其中包含一些需要在 VB.net 中序列化为 XML 文件的文本框。
一切正常,因为保存部分。我只能让流编写器/阅读器创建一个文件,每次有人使用计费应用程序时都会替换该文件,但我想使用 Savefile 对话框将序列化文件保存在其他地方,我想使用 openfile 对话框打开它们,而不是使用流.
代码如下:
'
Public Structure User
Public UserName As String
Public PassWord As String
Public StreetAddress As String
Public City As String
Public State As String
Public Zip As String
End Structure
Private Function CreateRecord() As User
Dim r As User
With r
.UserName = TextBox1.Text
.PassWord = TextBox2.Text
.StreetAddress = TextBox3.Text
.City = TextBox4.Text
.State = TextBox5.Text
.Zip = TextBox6.Text
End With
Return r
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ser As New XmlSerializer(GetType(User))
Dim fs As New FileStream("c:\userrecord.txt", FileMode.Create)
ser.Serialize(fs, CreateRecord())
fs.Close()
End Sub
Private Sub LoadIntoTB(ByVal rec As User)
With rec
TextBox1.Text = .UserName
TextBox2.Text = .PassWord
TextBox3.Text = .StreetAddress
TextBox4.Text = .City
TextBox5.Text = .State
TextBox6.Text = .Zip
End With
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ser As New XmlSerializer(GetType(User))
Dim fs As New FileStream("c:\userrecord.txt", FileMode.OpenOrCreate)
Dim rec As User
rec = DirectCast(ser.Deserialize(fs), User)
LoadIntoTB(rec)
fs.Close()
End Sub
如何用保存文件对话框和打开文件对话框替换 FileStream?
【问题讨论】:
【参考方案1】:您不能替换 FileStream 本身,它是写入实际文件的类。您想替换传入构造函数的文件名变量。
所有打开(和保存)FileDialog 所做的只是有效地将字符串设置为用户选择的文件路径。
您需要做的就是声明类并(设置您想要的任何属性,例如文件类型等)然后调用 .ShowDialog
可以在此处阅读文档: http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog%28v=vs.110%29.aspx http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog%28v=vs.110%29.aspx
顺便说一句,使用代码,没有归属,是不好的...... http://www.vbforums.com/showthread.php?616479-How-do-I-save-multiple-textboxes-to-a-single-file-and-load-each-one-by-itself&p=4172754#post4172754
【讨论】:
以上是关于VB.NET 序列化和保存的主要内容,如果未能解决你的问题,请参考以下文章
NewtonSoft.JSON 反序列化 - 未正确反序列化。 (VB.NET)
无法让 Protobuf-net 与 vb.net 一起使用