2014-02-06 155 views
0

我目前正在尝试编写编目程序。目前,我的目标是让“添加”按钮按需工作。我的代码:将子节点添加到树查看

private void populatingTreeView() 
{ 
    SqlCeCommand query = new SqlCeCommand("SELECT * FROM cars ORDER BY model", con); 
    SqlCeDataReader dr = query.ExecuteReader(); 

    while (dr.Read()) 
    { 
     TreeNode[] brandNode = treeView1.Nodes.Find(dr["brand"].ToString(), false); 
     if (!brandNode.Any()) 
     { 
      brandNode = new TreeNode[] 
      { 
      treeView1.Nodes.Add(dr["brand"].ToString(),dr["brand"].ToString()) 
      }; 
      platformNode[0].Nodes.Add(dr["brand"].ToString(), dr["model"].ToString()); 
     } 
      else 
      { 
      platformNode[0].Nodes.Add(dr["brand"].ToString(), dr["model"].ToString()); 
      } 
    } 
} 

它的工作原理。几乎。在begginging我的TreeView看起来像这样

enter image description here

然后,按下后​​, “添加” 按钮,每个子节点重复本身,但reciently加入(E90上的这张照片)

enter image description here

我修改了我的方法,我明白了。但在重新启动该程序后一切正在恢复正常

enter image description here

我的“添加”按钮方法

private void button1_Click(object sender, EventArgs e) 
{ 
SqlCeCommand com = new SqlCeCommand("INSERT INTO cars(model,brand) VALUES (@model,@brand)", con); 
    com.Parameters.AddWithValue("@model", textBox1.Text); 
    com.Parameters.Add("@brand", comboBox3.Text); 

    try 
    { 
     int affectedRows = com.ExecuteNonQuery(); 

     if (affectedRows == 0) 
     { 
      MessageBox.Show("Please, fill all the fields!"); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

回答

2

您需要清除树重新添加的节点,这是你真的在做什么:

treeView1.Nodes.Clear();