阻止在propertygrid的下拉元素中编辑项目

时间:2016-02-04 13:18:45

标签: c# winforms telerik 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;
    }
}

2 个答案:

答案 0 :(得分:1)

您应该使用EditorInitialized事件自定义下拉编辑器行为。

   void radPropertyGrid1_EditorInitialized(object sender, PropertyGridItemEditorInitializedEventArgs e)
    {
        PropertyGridDropDownListEditor editor = e.Editor as PropertyGridDropDownListEditor;
        if (editor != null)
        {
            editor.DropDownStyle = RadDropDownStyle.DropDownList;
        }
    }

以下是关于此事的文章:link

答案 1 :(得分:0)

设置组合框' DropDownStyle属性为ComboBoxStyle.DropDownList - 它的声音当前设置为ComboBoxStyle.DropDown,允许进行编辑。

请参阅ComboBoxStyle Enumeration