I cannot check your code, but I have created a small sample and it works fine
HTML
<asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="OnSelectedNodeChanged">
    <SelectedNodeStyle ForeColor="Black" />
</asp:TreeView>
<asp:Button ID="Button1" runat="server" Text="GetSelectedNode" OnClientClick="return GetSelectedNode();" />
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        TreeView1.Nodes.Add(New TreeNode("Mango", "Fruit1"))
        TreeView1.Nodes.Add(New TreeNode("Apple", "Fruit2"))
        TreeView1.Nodes.Add(New TreeNode("Pineapple", "Fruit3"))
        TreeView1.Nodes.Add(New TreeNode("Orange", "Fruit4"))
        TreeView1.Nodes.Add(New TreeNode("Grapes", "Fruit5"))
    End If
End Sub
Protected Sub OnSelectedNodeChanged(sender As Object, e As EventArgs)
    Dim text As String = TreeView1.SelectedNode.Text
End Sub
C#
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        TreeView1.Nodes.Add(new TreeNode("Mango", "Fruit1"));
        TreeView1.Nodes.Add(new TreeNode("Apple", "Fruit2"));
        TreeView1.Nodes.Add(new TreeNode("Pineapple", "Fruit3"));
        TreeView1.Nodes.Add(new TreeNode("Orange", "Fruit4"));
        TreeView1.Nodes.Add(new TreeNode("Grapes", "Fruit5"));
    }
}
protected void OnSelectedNodeChanged(object sender, EventArgs e)
{
    string text = TreeView1.SelectedNode.Text;
}