There is no clean fix for this, the native Windows treeview control is missing a "MeasureNode" kind of message. Which would be required to give the horizontal scrollbar the proper range if you custom-draw a wider string. So, inevitably, it is still based on the size of the TreeNode.Text string.
There's a dirty fix for this, it works but is unpleasant. You do it by giving the TreeNode.Text property a fake string, wide enough to whack the scrollbar in shape. And use, say, the Tag property to store the real string you want to draw. Ugly but effective hack. Unpleasant because you cannot easily hide that code.