I am using BrightIdeasSoftware TreeListView control. When I add a new node in the list, I want the new item to be visible and selected. I want the list to be automatically scrolled down to ensure its visibility.
I have written the following function to achieve this
public void EnsureNodeIsVisible(object item)
{
// Select the new node
treeListView.SelectedObject = item;
// Refresh the object in the TreeListView
treeListView.RefreshObject(item);
// Ensure the model is visible (this should scroll to it)
treeListView.EnsureModelVisible(item);
// Expand the new node
treeListView.Expand(item);
// Force the TreeListView to scroll to the selected item
var olvItem = treeListView.ModelToItem(item);
if (olvItem != null)
{
treeListView.FocusedItem = olvItem;
olvItem.EnsureVisible();
}
// Alternatively, if the node is at the end, manually scroll to the bottom
int maxIndex = treeListView.Items.Count - 1;
if (treeListView.SelectedIndex == maxIndex)
{
treeListView.EnsureVisible(maxIndex);
}
// Scroll the ListView to the item index to force visibility
treeListView.ScrollToIndex(olvItem.Index);
}
internal static class TreeListViewExtensions
{
public static void ScrollToIndex(this TreeListView treeListView, int index)
{
if (index >= 0 && index < treeListView.Items.Count)
{
treeListView.Items[index].EnsureVisible();
}
}
}
But the list wouldn’t scroll down to ensure the new node is visible and selected. What am I missing here?
New contributor
awais is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.