我目前正在尝试编写编目程序。目前,我的目标是制作"添加"按钮按我的意愿工作。我的代码:
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());
}
}
}
有效。几乎。在求助时,我的treeView看起来像这样
然后,按下"添加"按钮,每个子节点都复制自己,除了经常添加(此图片上的E90)
我sholud以某种方式修改我的方法,我明白了。但重启程序后,一切都恢复正常
我的"添加"按钮方法
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);
}
}
答案 0 :(得分:2)
您需要在重新添加节点之前清除树,这就是您真正在做的事情:
treeView1.Nodes.Clear();