PropertyGrid UIEditor отключает редактирование значений через клавиатуру - PullRequest
2 голосов
/ 11 августа 2011

У меня есть таблица свойств, которая использует UITypeEditor для отображения списка и выбора элемента. Этот элемент возвращается на proertygrid при выборе. Но как отключить редактирование выбранного элемента напрямую, опция readonly предотвращает его редактирование.

Допустим, я меняю страну собственности из другой формы, которая отображает список стран в списке. Когда я выбираю «Алжир» и нажимаю «ОК», в стране отображается «Алжир», но я могу напрямую отредактировать Алжир на любое другое значение, игнорируя назначение списка.

1 Ответ

6 голосов
/ 04 сентября 2011

Если вы просто хотите показать раскрывающийся список значений для выбора, но запретить пользователю вводить что-либо в значение свойства в элементе управления PropertyGrid, вы можете извлечь из TypeConverter и переопределить GetStandardValuesExclusive метод, который просто возвращает true.

Чтобы предоставить набор допустимых значений для отображения в раскрывающемся списке, необходимо переопределить метод GetStandardValuesSupported , чтобы вернуть true, а затем переопределить GetStandardValues ​​, чтобы вернуть список допустимых значений, которые вы хотите показать в выпадающем списке.

Как только вы это сделаете, вам нужно просто указать свой конвертер типов в свойстве следующим образом:

public class MyTypeConverter : TypeConverter
{
  //Override GetStandardValuesExclusive, 
  //GetStandardValues and GetStandardValuesSupported
}

public class SomeClass
{

   [TypeConverter(typeof(MyTypeConverter))]
   public string SomePropertry
   {
      ...
   }
}
...