vb.net My.Settings класс Категория и описание - PullRequest
0 голосов
/ 23 сентября 2019

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

Вот пример, который опубликовал кто-то другой, но вы должны обязательно включить все настройки.Я бы боялся, что могу пропустить один. my-settings-and-description-and-get-them-a-propertygrid

Я думаю, это не лучшая причина не использовать его.Я также не мог понять, как полностью реализовать эту опцию.Есть и другая сторона, которую я хотел бы иметь возможность поместить настройки в категорию вместо "Разное" , как Visual Studio делает по умолчанию.

Спасибо за помощь заранее.

J-Mo

1 Ответ

0 голосов
/ 24 сентября 2019

Мое решение

Моя цель состояла в том, чтобы иметь возможность отобразить все настройки в пользовательской области из файла settings.settings и позволить пользователювозможность их редактирования.

Скриншот формы настроек

Я добавил приведенный ниже код непосредственно в файл Settings.Designer.vb . Я знаю, что для продвижения вперед мне придется добавить все мои настройки вручную, чтобы не создавать заново код.

Добавлены следующие строки:

  1. Global.System.ComponentModel.DescriptionAttribute("Saves the location of the CMLs Form Location")
  2. Global.System.ComponentModel.CategoryAttribute("Location")
<Global.System.Configuration.UserScopedSettingAttribute(),
         Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),
         Global.System.ComponentModel.DescriptionAttribute("Saves the CMLs Form Location"),
         Global.System.ComponentModel.CategoryAttribute("Location"),
         Global.System.Configuration.DefaultSettingValueAttribute("0, 0")>
        Public Property FormCMLsLocation() As Global.System.Drawing.Point
            Get
                Return CType(Me("FormCMLsLocation"), Global.System.Drawing.Point)
            End Get
            Set
                Me("FormCMLsLocation") = Value
            End Set
        End Property

Это необходимо заполнить для каждого свойства в классе.

Сетка свойств в форме была ограниченав пользовательскую область с кодом ниже.

Public Class FormUserSettings
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Dim userAttr As New System.Configuration.UserScopedSettingAttribute
        Dim attrs As New System.ComponentModel.AttributeCollection(userAttr)

        Dim myProxy As New ProxySettings

        If PropertyGrid IsNot Nothing Then
            'PropertyGrid.SelectedObject = myProxy
            PropertyGrid.SelectedObject = My.Settings
        End If
        PropertyGrid.BrowsableAttributes = attrs

    End Sub
End Class

Дайте мне знать, если у вас есть лучший способ сделать это.Это не мой предпочтительный метод с тем, сколько может пойти не так.

-J-Mo

...