2016-07-28 7 views
0

以下はオブジェクトをシリアライズするコードです。フォームをシリアル化してアプリケーションの設定で保存するには、これが必要です。vb.netでフォームをシリアル化する方法は?

私はブレークポイントを設定し、それが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 

選択肢があれば、私はより多くを知っているのが大好きです。

+0

[クラスのソースコードを持っていないときに、オブジェクトの.NETバイナリシリアル化を行うことはできますか?](http://stackoverflow.com/質問/ 13166105/is-it-possible-to-do-net-binary-serialization-of-object-you-you-dont -have) – GSerg

+1

フォームインスタンスを通常作成するために必要なメタデータを保存するだけです。フォーム名と必要なctorパラメータのようなもの。 – Plutonix

+0

フォーム全体をシリアライズすることは忘れてしまいます。それは意味をなさない。あなたにとって重要なプロパティを設定にバインドすることができます。この方法では、各フォームを読み込むと、それらのプロパティは設定から​​読み込まれます。 –

答えて

1

.NETのフォームは、ウィンドウのハンドルを保持するため、シリアル化できません。このハンドルは、ここ(このコンピュータ上のこのセッション上)でのみ有効です。(10分後にアプリケーションを閉じると、ハンドルはもう有効になりません)。

したがって、ハンドルはシリアル化できず、どちらもフォームを作成できません。

  • あなたは
  • あなたは直列化され、別のクラスを作成、保存したい値を選択し、フォームを自分でシリアライズし、そのクラスは、ときにそれをフォームを作成します。この周りを動作させる

    アイデアがありますシリアル化されています...

関連する問題