Winform用户设置 - 允许在运行时选择多个值

时间:2010-04-01 14:02:47

标签: c# .net winforms settings propertygrid

我通过将Property.Settings绑定到PropertyGrid来创建一个简单的用户设置对话框。

这就像一个魅力,但现在我想只允许某些值的某些选择。我注意到某些类型会给出下拉可能的选择。这就是我正在拍摄的,但是比如说,弦乐。

示例,其中一个设置 UserTheme ,它是一个字符串。 黑色蓝色银色。程序从“设置文件”中读取该字符串,并在“启动”上设置主题。

我可以输入一个正确的主题并且它可以正常工作,但是如果我输入粉红色,它就不会因为没有粉红色选项。


这是我非常简单的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

修改

好的,按照这里的建议,我创建了一个包含enum的库文件。在我的主应用中引用了dll。现在settings我看到了enum,但dropdown只提供了第一个enum作为选项。想法?

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

2 个答案:

答案 0 :(得分:2)

Visual Studio设置编辑器会自动显示枚举类型的下拉列表。您可以尝试创建UserTheme枚举并测试PropertyGrid的行为与Visual Studio Settings编辑器的行为相同。

public enum UserTheme
{
    Black,
    Blue,
    Silver
}

更新:我刚刚测试过,PropertyGrid会自动显示枚举类型的下拉列表。

答案 1 :(得分:0)

您需要的是TypeConverter类。 (System.ComponentModel) 然后,您可以通过属性将类与Typeconverter相关联。 (如果我没有记错的话,甚至是财产)

您需要实现的方法是GetStandardValues和相关方法。

网上有很多文档。