如何在vb.net中序列化表单?

时间:2016-07-28 12:38:50

标签: vb.net forms

以下是序列化对象的代码。我需要这个来序列化一个Form并将其保存在我的应用程序的配置中。

我设置了断点并注意到它返回Nothing或Null(下面的代码中的第3行)

Public Function SerializeObject(ByVal o As Object) As String
    If Not o.GetType().IsSerializable Then
        Return Nothing
    End If

    Using stream As New MemoryStream()
        Dim ser As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
        ser.Serialize(stream, o)
        MessageBox.Show(Convert.ToBase64String(stream.ToArray))
        Return Convert.ToBase64String(stream.ToArray)
    End Using
End Function

如果有其他选择,我很想知道更多。

1 个答案:

答案 0 :(得分:1)

.NET中的表单不是可序列化的,因为它们拥有Window的句柄。此句柄仅在此处有效(在此计算机上的此会话中),现在(如果您在十分钟内关闭应用程序,则句柄将不再有效)。

因此句柄无法序列化,也无法形成。

解决这个问题的想法是:

  • 您自己序列化表单,选择要保存的值
  • 您创建了另一个Serializable类,该类将在序列化后创建表单...