Ich versuche, Funktionalität zu implementieren, damit der Benutzer seine bevorzugten Formulare auswählen kann. Bevorzugte Formulare sind Formulare, auf die er/sie schnell zugreifen kann. Um zu vermeiden, dass Sie zu lange durch die ToolStripMenus suchen.Wie speichere ich Objekte in der Winforms-Anwendung?
Ich versuche, einen Verweis auf ein Formular in der Anwendungskonfiguration zu speichern. Aber ich erhalte die Störung
Werte vom Typ ‚System.Windows.Forms.Form‘ kann nicht auf ‚String‘ umgewandelt werden.
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
Sie sollten stattdessen den Namen des Formulars speichern. Das Speichern des ganzen Formulars ist nicht gut, besonders nicht, wenn Sie es in der Zukunft ändern. In [diese Frage] (http://stackoverflow.com/questions/26478165/calling-a-separate-windows-form-using-its-name-as-a-string) erfahren Sie, wie Sie ein Formular über seinen Namen öffnen können . ** HINWEIS: ** Es erstellt eine neue Instanz des Formulars, dh es kann nicht mit der Standardinstanz geändert werden. –
Das Problem mit dem Speichern seines Namens ist, dass ich seine Parameter, die wieder Objekte sind, speichern muss. Und es ist kein Problem, wenn es eine neue Instanz erstellt. – SamekaTV
Hmm ... Dann scheint es besser, das gesamte Formular zu speichern. Sie könnten es zu einer Base64-Zeichenfolge serialisieren. [Siehe diese Antwort] (http://stackoverflow.com/a/2861749/3740093). –