MouseHover на корневой узел дерева - PullRequest
0 голосов
/ 01 сентября 2010

У меня дерево с одним корневым узлом. 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. Если бы у меня была указатель мыши, корневой узел ничего не должен был произойти. Может ли кто-нибудь помочь мне, пожалуйста.

Ответы [ 2 ]

1 голос
/ 01 сентября 2010
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);
          }
     }
}
0 голосов
/ 01 сентября 2010

Корневой узел не имеет родительского узла. Так что вам не следует ссылаться на e.Node.Parent.Text для корневого узла.Вам необходимо использовать условный оператор, проверяющий, является ли этот узел корневым или нет. Если текущий узел является корневым, вы должны правильно обработать его. Вы также можете обработать исключения, чтобы решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...