Scroll selected TreeView node into view
node.EnsureVisible();
for example:
if(treeView.SelectedNode != null) treeView.SelectedNode.EnsureVisible();
(see MSDN)
I also had issues with this and figured out that treeview.ExpandAll() ignores the EnsureVisible() effect and avoids the scrolling to the node position.
Just call EnsureVisible() after ExpandAll() if you want a full expanded tree with the scroll on the node you've selected.