これは、ここでこの種のものはないのサンプルコードで、それほど複雑ではありません:PropertyGridのは、多くの場合、単純なUIを起動して実行を取得する簡単な方法のように見えます、そしてあなたは、このような問題を
public class MyEditor : UITypeEditor
{
private IWindowsFormsEditorService _editorService;
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.DropDown;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (value != null) // already initialized
return base.EditValue(context, provider, value);
_editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
ListBox lb = new ListBox();
lb.SelectionMode = SelectionMode.One;
lb.SelectedValueChanged += OnListBoxSelectedValueChanged;
// TODO: add your items/logic here
lb.Items.Add(typeof(TYPE1));
lb.Items.Add(typeof(TYPE2));
....
lb.Items.Add(typeof(TYPEX));
_editorService.DropDownControl(lb);
if (lb.SelectedItem == null)
return base.EditValue(context, provider, value); // no selection, no change
// instantiate an object (add constructor logic if neede)
return Activator.CreateInstance((Type)lb.SelectedItem);
}
private void OnListBoxSelectedValueChanged(object sender, EventArgs e)
{
_editorService.CloseDropDown();
}
}
ヒットはそれは多くの時間を取ることにつながり、その後計画されています.... –