Как отключить выбор строк списка дерева в devexpress

Я создал древовидный список для отображения сектора и блоков памяти, теперь мне нужно отключить выбор корневого узла, а также нужно отключить строки блоков, которые уже заняты, чтобы из дерева можно было выбрать только активные строки список.

Кроме того, текст отключенных строк немного светлее, чтобы пользователь мог его различить.

Здесь я прилагаю образец изображения для справки, что мне нужно для достижения

введите здесь описание изображения


person Shubhit304    schedule 19.05.2020    source источник


Ответы (1)


Рассматривали ли вы возможность использования события TreeList.ShowingEditor? Что-то вроде этого:

void mytreelist_ShowingEditor(object sender, CancelEventArgs e) {  
   if(mytreelist.FocusedNode.Level == 0 /* root */ || SomeOtherCriteria()) 
   {
      e.Cancel = true;  
   }  
 }

Вы можете обработать TreeList.CustomDrawNodeCell, чтобы сделать строку отключенной:

private void mytreelist_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e) {
    if(e.Node.Level == 0 /* root */ || SomeOtherCriteria()) 
    {
      e.Appearance.ForeColor = Color.Gray;
    }  
}
person Marko Juvančič    schedule 19.05.2020
comment
Событие ShowingEditor не будет вызываться, поскольку мой элемент управления в виде дерева недоступен для редактирования пользователем - person Shubhit304; 26.05.2020
comment
Установите для параметров Редактируемый и Только для чтения значение true. - person Marko Juvančič; 26.05.2020