防止在 propertygrid 的下拉元素中编辑项目
Prevent editing items within dropdown element of propertygrid
我有以下代码,它在 属性 网格中显示可选项目的下拉列表,通常工作正常。但是,下拉列表允许编辑下拉列表中的项目,这会导致 'System.ComponentModel.EnumConverter.ConvertFrom' 出现错误,因为它不是有效的枚举。比如Option1
可以改成我要防止的OptionABC1
PropertyStoreItem 上有一个标志可将其设置为只读,但这可以防止整个 属性 被更改,而不是防止编辑下拉项。
如何使下拉列表不可编辑,但仍允许选择固定列表?它可能是 属性 网格上的 属性 我需要更改但找不到它。
[Flags]
Public Enum SomePropertyTypes
{
Option1 = 1,
Option2 = 2,
Option3 = 4,
Option4 = 8,
Option5 = 16,
Option6 = 32
}
public partial class AddSomePropertyForm : RadForm
{
private RadPropertyStore store;
Public AddSomePropertyForm()
{
InitializeComponent();
this.store = this.CreatePropertyStore();
this.radPropertyGrid1.SelectedObject = store;
}
private RadPropertyStore CreatePropertyStore()
{
RadPropertyStore somePropertyStore = new RadPropertyStore();
PropertyStoreItem somePropertyType = new PropertyStoreItem(typeof(SomePropertyTypes), "PropertyName", SomePropertyTypes.Option1, "Property Info", "Group1", false);
somePropertyStore.Add(somePropertyType);
return somePropertyStore;
}
}
将组合框 DropDownStyle
属性 设置为 ComboBoxStyle.DropDownList
- 听起来当前设置为 ComboBoxStyle.DropDown
,允许编辑。
您应该使用 EditorInitialized 事件自定义下拉编辑器的行为。
void radPropertyGrid1_EditorInitialized(object sender, PropertyGridItemEditorInitializedEventArgs e)
{
PropertyGridDropDownListEditor editor = e.Editor as PropertyGridDropDownListEditor;
if (editor != null)
{
editor.DropDownStyle = RadDropDownStyle.DropDownList;
}
}
这是一篇关于此事的文章:link
我有以下代码,它在 属性 网格中显示可选项目的下拉列表,通常工作正常。但是,下拉列表允许编辑下拉列表中的项目,这会导致 'System.ComponentModel.EnumConverter.ConvertFrom' 出现错误,因为它不是有效的枚举。比如Option1
可以改成我要防止的OptionABC1
PropertyStoreItem 上有一个标志可将其设置为只读,但这可以防止整个 属性 被更改,而不是防止编辑下拉项。
如何使下拉列表不可编辑,但仍允许选择固定列表?它可能是 属性 网格上的 属性 我需要更改但找不到它。
[Flags]
Public Enum SomePropertyTypes
{
Option1 = 1,
Option2 = 2,
Option3 = 4,
Option4 = 8,
Option5 = 16,
Option6 = 32
}
public partial class AddSomePropertyForm : RadForm
{
private RadPropertyStore store;
Public AddSomePropertyForm()
{
InitializeComponent();
this.store = this.CreatePropertyStore();
this.radPropertyGrid1.SelectedObject = store;
}
private RadPropertyStore CreatePropertyStore()
{
RadPropertyStore somePropertyStore = new RadPropertyStore();
PropertyStoreItem somePropertyType = new PropertyStoreItem(typeof(SomePropertyTypes), "PropertyName", SomePropertyTypes.Option1, "Property Info", "Group1", false);
somePropertyStore.Add(somePropertyType);
return somePropertyStore;
}
}
将组合框 DropDownStyle
属性 设置为 ComboBoxStyle.DropDownList
- 听起来当前设置为 ComboBoxStyle.DropDown
,允许编辑。
您应该使用 EditorInitialized 事件自定义下拉编辑器的行为。
void radPropertyGrid1_EditorInitialized(object sender, PropertyGridItemEditorInitializedEventArgs e)
{
PropertyGridDropDownListEditor editor = e.Editor as PropertyGridDropDownListEditor;
if (editor != null)
{
editor.DropDownStyle = RadDropDownStyle.DropDownList;
}
}
这是一篇关于此事的文章:link