2011-06-09 75 views
3

我有三個Buttons,TextBoxTreeView。我將節點動態添加到TreeView。我使用了一些代碼,它正在爲第一個(根)按鈕工作。它顯示其他兩個按鈕的Object reference not set to an instance of an object錯誤。我的三個按鈕是:Add rootAdd child,Deletewinforms中的treeview錯誤

我的代碼:

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(); 
} 
+0

您應該爲新問題創建一個新問題,因爲此問題已被標記爲已回答。當他們搜索這個錯誤以找到與標題/原始問題有關的答案時,它將在未來幫助其他人。 – pstrjds 2011-06-09 05:24:10

+0

k謝謝你的好建議 – jeni 2011-06-09 05:35:58

+0

可能重複的[treeview錯誤在winforms](http://stackoverflow.com/questions/6288549/treeview-error-in-winforms) – 2011-06-09 08:01:08

回答

1

當您在此時沒有選定項目時訪問treeView1.SelectedNode時會引發異常。

的修復可能是:

private void button3_Click(object sender, EventArgs e) 
{ 
    if (treeView1.SelectedNode != null) 
     treeView1.SelectedNode.Remove(); 
} 
1

可能的問題是,你iddnt刪除/上添加子節點之前選擇TreeView節點新增/現有項目。

您在執行添加子項之前檢查什麼是t。

第一次工作,因爲根選擇,下次不工作,因爲沒有選擇添加的新項目。

0

這是proably你沒有選擇任何東西,你可以告訴用戶選擇,或者你也可以手動選擇。

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; 

    }