Я хотел бы реализовать поле autocomplete string в PropertyGrid, которое может быть установлено на пользовательское значение.WinForms PropertyGrid: dynamic StandardValuesCollection change
Вот моя строка конвертер
public class EntityNameAutocompleteConverter : StringConverter
{
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return false;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
return new StandardValuesCollection(Globals.EntityCache.Select(e => e.Name).ToList());
}
}
и я поставил его в качестве TypeConverter для свойства строки для редактирования.
Проблема в том, что может быть много стандартных значений. Поэтому я хотел бы отфильтровать их с помощью ввода, например. если я ввел «Foo», я увижу только строки, которые начинаются с «Foo» в раскрывающемся списке.
Возможно ли это каким-либо образом? Может быть, можно получить промежуточное значение свойства из контекста или любым другим способом?
Спасибо, хорошо работает. Фактически текстовое поле теряет фокус при нажатии кнопки выпадающего меню, поэтому текущее значение редактирования сохраняется в экземпляре. – shtaff
Да, если вам нужно индивидуальное поведение, вы должны написать пользовательский UITypeEditor, что-то вроде этого: http://stackoverflow.com/questions/4305033/property-grid-create-new-instance-on-a-property –