MouseHover在树视图的根节点上

时间:2010-09-01 07:22:27

标签: c# winforms treeview

我正在使用一个根节点进行树视图。我编写了MouseHoverEvent,如下所示

   private void tvwACH_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
    {

        string strFile = string.Empty;
        if (e.Node.Parent.Text == "FileHeader")
        {
            strFile = e.Node.ToString();

            string str = strFile.Substring(10);
            StringComparison compareType = StringComparison.InvariantCultureIgnoreCase;
            string fileName = Path.GetFileNameWithoutExtension(str);
            string extension = Path.GetExtension(str);
            if (extension.Equals(".txt", compareType))
            {

                StringBuilder osb = new StringBuilder();
                objFileHeader.getFileHeader(str, out osb);
                e.Node.ToolTipText = Convert.ToString(osb);
            }
        }

    }

但是如果我在根节点上放了我的鼠标,我会收到一个错误,因为处理了null exceptio。如果我让我的鼠标悬停在根节点上,就不会发生任何事情。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

private void tvwACH_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
{
     string strFile = string.Empty;

     // the problem is here, root node does not have a parent
     // also added a fix
     if (e.Node.Parent != null && e.Node.Parent.Text == "FileHeader")
     {
          strFile = e.Node.ToString();

          string str = strFile.Substring(10);
          StringComparison compareType = StringComparison.InvariantCultureIgnoreCase;
          string fileName = Path.GetFileNameWithoutExtension(str);
          string extension = Path.GetExtension(str);
          if (extension.Equals(".txt", compareType))
          {
              StringBuilder osb = new StringBuilder();
              objFileHeader.getFileHeader(str, out osb);
              e.Node.ToolTipText = Convert.ToString(osb);
          }
     }
}

答案 1 :(得分:0)

根节点没有设置父节点。因此,您不应该为根节点引用e.Node.Parent.Text。 您需要使用条件语句检查此节点是否是根节点。如果是当前节点 是root你应该正确处理它。你也可以处理异常以解决这个问题。

相关问题