本帖最后由 chirea 于 2011-03-19 23:29:02 编辑

解决方案 »

  1.   

    别的还没看出来,我感觉你的树点击节点事件应该用NodeMouseClick而不是AfterSelect
    附我自己的程序中点击节点方法:        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                //如果在节点上点击的是左键
                if (e.Button == MouseButtons.Left)
                {
                    //根据点击的节点到yuangong表提取对应的员工,然后在listview中显示
                    listView1.Clear();
                    using (OleDbConnection conn = new OleDbConnection(connstr))
                    {
                        conn.Open();
                        using (OleDbCommand cmd = new OleDbCommand("select products_name from products where tid=" + e.Node.Tag, conn))
                        {
                            OleDbDataReader dr = cmd.ExecuteReader();
                            while (dr.Read())
                            {
                                listView1.Items.Add(dr[0].ToString());
                            }
                            dr.Close();
                        }
                    }
                }
                //如果在节点上点击鼠标右键则在点击处显示右键菜单
                else
                {
                    treeView1.SelectedNode = e.Node;
                    contextMenuStrip1.Visible = true;
                    contextMenuStrip1.Left = MousePosition.X;
                    contextMenuStrip1.Top = MousePosition.Y;
                }
            }你先把这个改了试试。别的暂时没看到问题
      

  2.   

    别的地方没看出问题来另外数据访问最好用using()代码块,参见我的例子
      

  3.   

    谢谢,已经解决了,是在AfterSelect事件里面解决的.