Я пытаюсь реализовать функциональность, позволяющую пользователю выбирать его любимые формы. Любимые формы - это формы, к которым ему нужен быстрый доступ. Чтобы избежать слишком долгого просмотра через ToolStripMenu.Как сохранить объекты в приложении «Конфигурация Winforms»?
Я пытаюсь сохранить ссылку на форму в конфигурации приложения. Но я получаю ошибку
Значение «System.Windows.Forms.Form» типа не могут быть преобразованы в «String».
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). –