我通过将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
};
}
答案 0 :(得分:2)
Visual Studio设置编辑器会自动显示枚举类型的下拉列表。您可以尝试创建UserTheme枚举并测试PropertyGrid的行为与Visual Studio Settings编辑器的行为相同。
public enum UserTheme
{
Black,
Blue,
Silver
}
更新:我刚刚测试过,PropertyGrid
会自动显示枚举类型的下拉列表。
答案 1 :(得分:0)
您需要的是TypeConverter类。 (System.ComponentModel) 然后,您可以通过属性将类与Typeconverter相关联。 (如果我没有记错的话,甚至是财产)
您需要实现的方法是GetStandardValues和相关方法。
网上有很多文档。