Настройки пользователя Winform - Разрешить множественный выбор значений во время выполнения - PullRequest
0 голосов
/ 01 апреля 2010

Я создал простой диалог настроек пользователя, привязав Property.Settings к PropertyGrid.

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

Например, одна из настроек - это UserTheme , которая является строкой. Черный , Синий , Серебро . Программа считывает эту строку из файла настроек и устанавливает тему при запуске.

Я могу ввести правильную тему, и она работает, но если я наберу в Pink, это не так, как нет розового варианта.


Это мой ОЧЕНЬ простой код UserSettingsForm.

    #region FIELDS

    internal Settings userSettings;

    #endregion

    #region EVENTS

    private void frmEditUserControl_Load(object sender, EventArgs e)
    {
        userSettings = Settings.Default;
        this.propertyGrid1.SelectedObject = userSettings;
        this.propertyGrid1.PropertySort = PropertySort.Alphabetical;
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        userSettings.Save();
        //this.DialogResult = DialogResult.OK;
        this.Close();
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
        userSettings.Reload();
        this.Close();
    }

    #endregion

EDIT

Хорошо, следуя приведенному здесь совету, я создал файл библиотеки с моим enum. Ссылка dll в моем главном приложении. Теперь в settings я вижу enum, но dropdown дает только первый enum в качестве опции. Идеи?

namespace psWinForms
{
    public enum UserTheme
    {
        Blue,
        Black,
        Silver,
        Green,
        Pink
    };
}

Ответы [ 2 ]

2 голосов
/ 01 апреля 2010

В редакторе настроек Visual Studio автоматически отображается раскрывающийся список типов перечисления. Вы можете попытаться создать перечисление UserTheme и проверить, что PropertyGrid ведет себя так же, как редактор настроек Visual Studio.

public enum UserTheme
{
    Black,
    Blue,
    Silver
}

Обновление: Я только что протестировал, и PropertyGrid автоматически показывает раскрывающийся список для типа перечисления.

0 голосов
/ 01 апреля 2010

Вам нужен класс TypeConverter. (System.ComponentModel) Затем вы можете связать класс с преобразователем типов через атрибут. (Даже собственность, если я не ошибаюсь)

Методы, которые вам нужно реализовать, - это GetStandardValues ​​и связанные методы.

В сети доступно много документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...