C# 树状视图根节点上的鼠标悬停
我有一个树状视图,其中有一个根节点。我写了如下的MouseHoverEventC# 树状视图根节点上的鼠标悬停,c#,winforms,treeview,C#,Winforms,Treeview,我有一个树状视图,其中有一个根节点。我写了如下的MouseHoverEvent private void tvwACH_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e) { string strFile = string.Empty; if (e.Node.Parent.Text == "FileHeader") { strFile =
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。如果将鼠标悬停在根节点上,则不会发生任何事情。任何人都可以帮助我。根节点没有父节点集。因此,您不应该为根节点引用e.Node.parent.Text。 您需要使用条件语句检查此节点是否为根节点。如果为当前节点 你应该正确处理它。你也可以处理异常来解决这个问题
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);
}
}
}