我正在使用一个根节点进行树视图。我编写了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。如果我让我的鼠标悬停在根节点上,就不会发生任何事情。任何人都可以帮助我。
答案 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你应该正确处理它。你也可以处理异常以解决这个问题。