Ich bin unsicher, ob dies ein Fehler ist, ein "Feature", oder wenn ich etwas falsch mache, aber ich versuche, eine DataGridViewCellStyle
als Benutzer-Bereich zu speichern Einstellung in einer Windows Forms-Anwendung, die in VB.NET codiert ist. Ich bin in der Lage, andere Einstellungen korrekt zu speichern und zu laden, aber keine DataGridViewCellStyles.Visual Studio benutzerdefiniert DataGridViewCellStyle Einstellung nicht speichern
Ich ging so weit, eine neue Anwendung einzurichten dies zu testen, und ich das gleiche Problem mit:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
My.Settings.UserDGVCellStyle = New DataGridViewCellStyle
My.Settings.UserDGVCellStyle.Font = New Drawing.Font("Times New Roman", 14, FontStyle.Italic)
My.Settings.UserDGVCellStyle.BackColor = Color.Azure
My.Settings.UserFont = New Drawing.Font("Times New Roman", 13, FontStyle.Italic)
My.Settings.UserBackgroundColor = Color.Black
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
My.Settings.Save()
End Sub
End Class
ich auf den ersten und letzten Zeilen eine Code-Pause setzen. Die My.Settings.UserbackgroundColor
und My.Settings.UserFont
Einstellungen bestehen bleiben, wenn die Anwendung geschlossen und wieder geöffnet, aber My.Settings.UserDGVCellStyle
zeigt immer als ‚nichts‘ zu sein, wenn die Anwendung neu gestartet wird (obwohl es zeigt als
„{DataGridViewCellStyle {Backcolor = Farbe [Azure ], Font = [Schriftart: Name = Times New Roman, Größe = 14 Einheiten = 3, GdiCharSet = 1, GdiVerticalFont = false]}}“
während der My.Settings.Save() Linie).
Ich realisiere, dass ich anstelle des DataGridViewCellStyle, könnte ich es durch eine Reihe von individuellen Einstellungen (zB Schriftart, BackColor, Alignment, etc) ersetzen, aber ich möchte nicht, wenn ich nicht muss, wie ich es oft für meine Bewerbung machen muss.
Bei einer (möglicherweise) verwandten Notiz erinnere ich mich daran, dieses Problem beim Speichern einer DataTable zu haben, aber sobald ich DataTable.TableName gefüllt habe, hat die Tabelle erfolgreich bestanden.
Ich glaube nicht, dass DataGridViewCellStyle als serialisierbar markiert ist, so dass es die Anweisungen nicht kennt, die benötigt werden, um ein neues Objekt zu erstellen. – LarsTech
Danke @LarsTech. Es ist wahr, dass "Implements ISerializable" nicht Teil seiner MSDN-Definition ist, und ich habe auch gelesen, dass benutzerdefinierbare Einstellungen serialisierbar sein müssen, damit sie funktionieren. Es wäre jedoch nett, wenn Sie im Bereich Projekteigenschaften -> Einstellungen gewarnt werden, wenn Sie eine "nicht serialisierbare" Klasse/ein Objekt zu den Einstellungen hinzufügen, damit zukünftige Benutzer nicht so viel Zeit damit verschwenden, dies herauszufinden. – Sturgus
Und so könnten Sie hinzufügen "DataGridViewCellStyles sind nicht serialisierbar und als solche sind nicht abrufbare Anwendung Einstellungen", und ich werde es als die richtige Antwort akzeptieren. – Sturgus