【问题标题】:Winform User Settings - Allow multiple choice values at RuntimeWinform 用户设置 - 在运行时允许多项选择值
【发布时间】:2010-04-01 14:02:47
【问题描述】:

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

这就像一个魅力,但现在我想只允许某些值的某些选择。我注意到某些类型会提供可能选择的下拉列表。这就是我所追求的,但不是为了,比如说,字符串。

例如,Settings 之一是 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

编辑

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

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

【问题讨论】:

  • 它只显示设计器中的第一个选项,但在运行时显示所有选项。不知道为什么,但它现在正在“工作”。

标签: c# .net winforms settings propertygrid


【解决方案1】:

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

public enum UserTheme
{
    Black,
    Blue,
    Silver
}

更新:我刚刚进行了测试,PropertyGrid 自动显示一个枚举类型的下拉列表。

【讨论】:

  • 不错。我会看看。对在哪里创建 enumeration 以便将其拾取有任何猜测吗?
  • @Refracted Paladin, IIRC 当您选择允许浏览引用程序集的设置类型时。因此,将您的公共枚举放在库中应该可以工作。
  • @Joao Angelo:所以你是对的,枚举是要走的路。不幸的是,我无法让它显示在设置中。有关详细信息,请参阅我的编辑。
  • @Refracted Paladin,不要将枚举类型嵌套在类中。我从未尝试过,也不知道设置设计器是否支持。
【解决方案2】:

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

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

网上有很多文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    相关资源
    最近更新 更多