Если вы нажмете на родительские узлы (1-й уровень) и затем вызовете
node.Parent.SomeMethod
вы получите исключение NullReference, поскольку его Parent равен null
Поместите некоторую проверку, чтобы проверить, не является ли Родитель не нулевым
if(node.Parent != null)
{
// do stuff
}
Та же ситуация для node.FirstNode - он вернет null
, если для этого узла нет дочерних элементов, поэтому также поставьте проверку для этого
if(node.FirstNode != null)
{
// do stuff
}
EDIT:
в вашем фрагменте e.Node.Parent.Parent
некоторые из родителей могут быть нулевыми, а e.Node.FirstNode
может быть нулевыми, поэтому вы заканчиваете исключением
if (e.Node.Parent != null && e.Node.Parent.Text == "Tables")
{
this.Controls.Remove(dg);
if(e.Node.Parent.Parent != null)
{
this.dg= dal.showTable(e.Node.Text,e.Node.Parent.Parent.Text);
this.dg.Location = new System.Drawing.Point(this.tr.Width + 1, this.menuStrip1.Height + 2);
this.dg.Size = new System.Drawing.Size(n - dg.Location.X, 300);
this.dg.BackgroundColor = System.Drawing.Color.White;
this.tableName = e.Node.Text;
this.Controls.Add(dg);
}
}
else if (e.Node.FirstNode != null && e.Node.FirstNode.Text == "Tables")
{
dal.changeDatabase(e.Node.Text);
}