Я использую TreeListView (ObjectListView) и заселили ее с числом элементов из БД:Select (выделить) узел в TreeListView
class Data
{
public int ID { get; set; }
public string Name { get; set; }
public List<Data> Child;
public Data(int id, string name)
{
ID = id;
Name = name;
Child = new List<Data>();
}
}
Как я могу выбрать объект (узел), прокрутите дерево и расширить родительских узлов к нему (если необходимо)? Я попытался это:
var node = data.SelectMany(x => GetChildren(x)).Where(x => x.ID == 100).FirstOrDefault();
if (node != null)
{
this.tlv.Select();
this.tlv.SelectObject(node, true);
<???>
}
Для средних WinForms TreeView мой код выглядит следующим образом:
treeView1.SelectedNode = findNodes[j];
findNodes[j].EnsureVisible();
WinAPI.SendMessage(treeView1.Handle, WinAPI.WM_HSCROLL, (IntPtr)WinAPI.SB_LEFT, IntPtr.Zero);
попробовать это: http://stackoverflow.com/questions/10034714/c-sharp-winforms-highlight-treenode-when-treeview-doesnt -have-focus –
'tlv.SelectObject' должно быть достаточно. TLV сравнивает объекты по ссылке. Является ли объект 'node' выбранным из' data' существующим в списке объектов TLV (с той же ссылкой)? Возможно, вы заполнили данные TLV из другого запроса базы данных. –
Он работает, когда 'treeView1.ExpandAll()'. В этом случае я бы использовал 'SelectObject (node)' и 'EnsureModelVisible (node)'. Но когда дерево рухнуло, эти методы не работают, и 'treeListView1.GetParent (node)' возвращает значение null (Как мне получить всех родителей, а затем расширить их?) – egeo