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)

vb.net做对象xml序列化学习,程序报错

vb.net 数据表序列化为 json

无法让 Protobuf-net 与 vb.net 一起使用

使用 JsonConvert 将 JSON 反序列化为 VB.NET 中的数据表

使用 NamePipe [进程间通信] VB.NET 传输对象