Проблема с событием CellValueChanged TreeList

123
12 февраля 2018, 01:18

В дерево загружаю объекты

private void FillTree(List<Theme> thems)
{
    Root.Nodes.Clear();
    for (int i = 0; i < thems.Count; i++)
    {
        var theme = thems[i];
        var node = Thems.AppendNode(new object[] { theme }, Root);
        for (int j = 0; j < theme.Questions.Count; j++)
        {
            var question = theme.Questions[j];
            Thems.AppendNode(new object[] { question }, node);
        }
    }
}

Когда пытаюсь изменить текст в ноде(по F2) , то хочу изменить свойство объекта которое там сидит, но в событии CellValueChanged объект obj(Theme) имеет не мой тип а string.

  private void Thems_CellValueChanged(object sender, DevExpress.XtraTreeList.CellValueChangedEventArgs e)
    {
        if(e.Node != null)
        {
            var obj = (Thems.GetDataRecordByNode(e.Node) as ArrayList)[0];
            if (obj != null)
            {
                if (obj.GetType() == typeof(Theme))
                    ((Theme)obj).Caption = e.Value.ToString();
            }
        }
    }

В событии FocusedNodeChanged переменная obj до изменения имеет мой тип , а после тип string

   private void Thems_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
    {
        if (e.Node == null)
            return;
        var obj = (Thems.GetDataRecordByNode(e.Node) as ArrayList)[0];
} 

Перезатирается он что ли. Как изменить при редактировании свойство моего объекта?

Answer 1

Необходимо было для своих объектов реализовать интерфейс IVirtualTreeListData и назначит свойству DataSourse корневой элемент своей структуры либо же воспользоваться событиями дерева VirtualTreeGetChildNodes, VirtualTreeGetCellValue, VirtualTreeSetCellValue Ответ тут и тут

READ ALSO
Как получить заголовок активного окна в консоли?

Как получить заголовок активного окна в консоли?

Какие есть способы получения заголовков из всех истоков ( браузеры, текстовики ит

148
Новая версия - новое шифрование!

Новая версия - новое шифрование!

Проблема: обновил хром, хочу программным способом получить все логины/пароли

131
Как мне подключиться к мэил ру почте C#

Как мне подключиться к мэил ру почте C#

Как мне подключиться к мэил ру почте C# и получить последнее сообщение желательно без использования платных библиотек

153
List&lt;T&gt; с DisplayName в DataTable

List<T> с DisplayName в DataTable

Добрый деньИмеется следующий код, который хорошо копирует данные из List c DisplayName в DataTable:

151