Вам необходимо создать UITypeEditor
. Ниже приведен шаблон для редактора COMBOX: -
public class MyCustomEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.DropDown;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider)
{
var editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
var list = new ListBox();
// Your code here to populate the list box with your items
EventHandler onclick = (sender, e) => {
editiorService.CloseDropDown();
};
list.Click += onclick;
myEditorService.DropDownControl(list);
list.Click -= onclick;
return (list.SelectedItem != null) ? list.SelectedItem : Guid.Empty;
}
}
На вашей собственности в деятельности: -
[Editor(typeof(MyCustomEditor), typeof(UITypeEditor)]
public Guid MyGuidValue
{
get { return (Guid)GetValue(MyGuidValueProperty); }
set { SetValue(MyGuidValueProperty, value); }
}
- Атрибут
Editor
расскажет PropertyGrid, что вы создали собственный редактор для это свойство.
- Метод редактора
GetEditStyle
позволяет сетке свойств отображать кнопку раскрывающегося списка по правильному значению.
- При нажатии на сетку свойств вызывается метод настраиваемого редактора
EditValue
.
- Служба редактора используется для отображения выпадающего списка с помощью метода
DropDownControl
, который принимает элемент управления, который должен отображаться в раскрывающемся списке.
- Метод
DropDownControl
будет блокироваться до тех пор, пока не вызывается метод редактора CloseDropDown
.
Спасибо Anthony, я попробую его. Вы знаете, возможно ли установить этот список? Или даже мой пользовательский контроль? – pdiddy
Вы можете передать практически все, что вам нравится в DropDownControl, включая собственный пользовательский. – AnthonyWJones