ため息...イベントを持つプロパティを持つクラスがあります。このイベントは、プロパティの値が変更されたときに発生します。クラスのインスタンスは、フォーム上の情報のバッカーです。後で思い出せるように、フォーム内の情報を保存する必要があります。
ここでの考え方は、プロパティをデータソースとしてフォームのテキストボックスとデータグリッドビューにバインドすることです。これは、クラスの値が変更されたときにイベントがテキストボックスまたはデータグリッドビューを更新するためのドライバーです。
したがって...次のコードを使用して静的変数(テスト)のファイルを保存すると、正常に動作します:
Dim test As String = "Hello"
' Persist to file
Dim save As New SaveFileDialog
If save.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim stream As FileStream = File.Create(save.FileName)
Dim formatter As New BinaryFormatter()
formatter.Serialize(stream, test)
stream.Close()
End If
データをバックアップするクラスのインスタンスを使用して試してみると、クラスにイベントがあるため、エラーがスローされます。
Dim test As new ClassWithEvents()
' Persist to file
Dim save As New SaveFileDialog
If save.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim stream As FileStream = File.Create(save.FileName)
Dim formatter As New BinaryFormatter()
formatter.Serialize(stream, test)
stream.Close()
End If
エラー:
アセンブリ 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' の 'System.Windows.Forms.Form' と入力すると、シリアル化可能としてマークされません。
私が実際にやりたいことは、フォーム上のコントロールの値を保持して、後で思い出せるようにすることだけです。
何か案は?