Параметр DataGridViewCellStyle в области пользователя Visual Studio не сохраняется

Я не уверен, является ли это ошибкой, «функцией» или я делаю что-то неправильно, но я пытаюсь сохранить DataGridViewCellStyle в качестве пользовательской настройки в приложении Windows Forms, закодированном в VB.NET. Я могу правильно сохранить и загрузить другие настройки, но не DataGridViewCellStyles.

Я зашел так далеко, что создал новое приложение для проверки этого, и у меня та же проблема:

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

Я поставил код-брейк на первую и последнюю строки. Настройки My.Settings.UserbackgroundColor и My.Settings.UserFont сохраняются при закрытии и повторном открытии приложения, но My.Settings.UserDGVCellStyle всегда отображается как «ничего» при перезапуске приложения (даже если оно отображается как

"{DataGridViewCellStyle { BackColor=Color [Azure], Font=[Font: Name=Times New Roman, Size=14, Units=3, GdiCharSet=1, GdiVerticalFont=False] }}"

во время строки My.Settings.Save()).

Я понимаю, что вместо того, чтобы пытаться сохранить DataGridViewCellStyle, я мог бы заменить его набором отдельных настроек (например, шрифт, фоновый цвет, выравнивание и т. д.), но я бы предпочел не нужно сделать это много раз для моего приложения.

В (потенциально) связанной заметке я помню, что у меня была эта проблема при сохранении DataTable, но как только я заполнил DataTable.TableName, таблица успешно сохранилась.


person Sturgus    schedule 19.04.2016    source источник
comment
Я не думаю, что DataGridViewCellStyle помечен как сериализуемый, поэтому он не знает инструкций, необходимых для создания нового объекта.   -  person LarsTech    schedule 19.04.2016
comment
Спасибо @LarsTech. Это правда, что Implements ISerializable не является частью его определения MSDN, и я также читал, что пользовательские настройки должны быть сериализуемыми, чтобы они работали. Хотя было бы неплохо, если бы панель свойств проекта -> панель настроек предупреждала вас при добавлении несериализуемого класса/объекта в настройки, чтобы будущие пользователи не тратили столько времени на выяснение этого, как я.   -  person Sturgus    schedule 19.04.2016
comment
Итак, вы можете добавить, что DataGridViewCellStyles не сериализуемы и, как таковые, не являются извлекаемыми настройками приложения, и я приму это как правильный ответ.   -  person Sturgus    schedule 19.04.2016
comment
Никакие элементы управления не сериализуемы. Однако вы можете написать небольшой класс, представляющий StyleSet, сохранить пользовательские параметры в их набор и сериализовать его вручную.   -  person Ňɏssa Pøngjǣrdenlarp    schedule 19.04.2016


Ответы (1)


DataGridViewCellStyles не подлежат сериализации, поэтому они не являются извлекаемыми настройками приложения.

Вот он, теперь в форме ответа. Я пришел искать ответ на эту же проблему, и вы правы, для меня это тоже было пустой тратой времени.

person jefff    schedule 22.11.2016