2016-04-19 4 views
0

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.

+1

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

+0

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

+0

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

Antwort

0

DataGridViewCellStyle s sind nicht serialisierbar, daher sind sie nicht abrufbare Anwendungseinstellungen.

Da ist es, jetzt in Antwortform. Ich bin auf der Suche nach der Antwort auf dasselbe Problem, und du hast Recht, es war auch ein Zeitverschwender für mich.

Verwandte Themen