I compromised in the end, and decided just to add tooltips to leaf nodes in the tree, so I only needed to override the TreeNodePopulate event.
In brief, I did this by deriving my own class from CMSTreeView and overriding the OnTreeNodePopulate method. It uses a Regular Expression to look for nodes that have an <a> (anchor) element in them, and extracts the text to use as a tool tip.
This is some of the code, if of interest.
protected override void OnTreeNodePopulate(TreeNodeEventArgs e)
{
base.OnTreeNodePopulate(e);
// Add ToolTips to the populated nodes
foreach (TreeNode childNode in e.Node.ChildNodes)
{
//Look for the text in <a ...>THIS TEXT</a>, if anchor exists
Match anchorTextMatch = Regex.Match(childNode.Text,@"<a.*>(.*)</a>$");
if (anchorTextMatch.Success)
{
childNode.ToolTip = HttpUtility.HtmlDecode( anchorTextMatch.Groups[1].Value);
}
}
}
Steve