I have three Buttons
, one TextBox
and a TreeView
. I am adding nodes dynamical开发者_StackOverflow社区ly to the TreeView
. I used some code and it is working for the first(root) button. It shows Object reference not set to an instance of an object
error for other two buttons. My three buttons are: Add root
, Add child
, Delete
.
My code:
private void button1_Click(object sender, EventArgs e)
{
TreeNode t;
t = treeView1.Nodes.Add(textBox1.Text);
}
private void button2_Click(object sender, EventArgs e)
{
TreeNode t;
t = treeView1.SelectedNode;
t.Nodes.Add(textBox1.Text);
treeView1.SelectedNode.ForeColor = Color.Red;
}
private void button3_Click(object sender, EventArgs e)
{
treeView1.SelectedNode.Remove();
}
The exception is thrown when you access treeView1.SelectedNode
when there is no selected item at that moment.
The fix could be:
private void button3_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
treeView1.SelectedNode.Remove();
}
The possible issue is, you iddnt select the newly added/existing item in treeview node before deleting/adding child nodes on that.
You check what is t before performing adding child.
First time its working because, root is selected, next time not working because the new item added is not selected anymore.
This is proably you didnt select anything, you can tell user to select or you can manually select.
private void button3_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
treeView1.SelectedNode.Remove();
else
Messagebox.Show ("Please select the node first");
}
private void button1_Click(object sender, EventArgs e)
{
TreeNode t;
t = treeView1.Nodes.Add(textBox1.Text);
treeView1.SelectedNode = t;
}
精彩评论