私は彼が好きなフォームを選択できるように機能を実装しようとしています。お気に入りのフォームは、すぐにアクセスする必要のあるフォームです。 ToolStripMenuのブラウズが長すぎるのを避けるため。Winformsアプリケーションの設定でオブジェクトを保存するにはどうすればよいですか?
アプリケーション設定でフォームへの参照を保存しようとしました。しかし、私はエラーに型「System.Windows.Forms.Form」の
値を取得しています 「文字列」に変換することはできません。
Public Sub SetSetting(ByVal pstrKey As String, ByVal frmFavorite As Form)
Dim keyExists As Boolean = False
For Each strKey As String In configuration.AppSettings.Settings.AllKeys
If strKey.Equals(pstrKey) Then
configuration.AppSettings.Settings.Item(pstrKey).Value = frmFavorite
keyExists = True
End If
Next
If Not keyExists Then
configuration.AppSettings.Settings.Add(pstrKey, frmFavorite)
End If
configuration.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection("appSettings")
End Sub
あなたは代わりに、フォームの名前を保存する必要があります。フォーム全体を保存するのは良いことではありません。特に、将来変更する場合はありません。名前でフォームを開く方法は、[この質問](http://stackoverflow.com/questions/26478165/calling-a-separate-windows-form-using-its-name-as-a-string)を参照してください。 。 **注:**フォームの新しいインスタンスを作成します。つまり、デフォルトインスタンスを使用して変更することはできません。 –
名前を保存する際の問題は、オブジェクトのパラメータを保存する必要があることです。また、新しいインスタンスを作成する場合は問題になりません。 – SamekaTV
うーん...その後、フォーム全体を保存する方が良いようです。それをbase64文字列にシリアル化することができます。 [この回答を見る](http://stackoverflow.com/a/2861749/3740093)。 –