第一个问题
[C#] 
private void FillTreeView()
{
    // Load the images in an ImageList.
    ImageList myImageList = new ImageList();
    myImageList.Images.Add(Image.FromFile("Default.gif"));
    myImageList.Images.Add(Image.FromFile("SelectedDefault.gif"));
    myImageList.Images.Add(Image.FromFile("Root.gif"));
    myImageList.Images.Add(Image.FromFile("UnselectedCustomer.gif"));
    myImageList.Images.Add(Image.FromFile("SelectedCustomer.gif"));
    myImageList.Images.Add(Image.FromFile("UnselectedOrder.gif"));
    myImageList.Images.Add(Image.FromFile("SelectedOrder.gif"));
    
    // Assign the ImageList to the TreeView.
    myTreeView.ImageList = myImageList;
    
    // Set the TreeView control's default image and selected image indexes.
    myTreeView.ImageIndex = 0;
    myTreeView.SelectedImageIndex = 1;    /* Set the index of image from the 
    ImageList for selected and unselected tree nodes.*/
    this.rootImageIndex = 2;
    this.selectedCustomerImageIndex = 3;
    this.unselectedCustomerImageIndex = 4;
    this.selectedOrderImageIndex = 5;
    this.unselectedOrderImageIndex = 6;
    
    // Create the root tree node.
    TreeNode rootNode = new TreeNode("CustomerList");
    rootNode.ImageIndex = rootImageIndex;
    rootNode.SelectedImageIndex = rootImageIndex;
      
    // Add a main root tree node.
    myTreeView.Nodes.Add(rootNode);    // Add a root tree node for each Customer object in the ArrayList.
    foreach(Customer myCustomer in customerArray)
    {
        // Add a child tree node for each Order object.
        int countIndex=0;
        TreeNode[] myTreeNodeArray = new TreeNode[myCustomer.CustomerOrders.Count];
        foreach(Order myOrder in myCustomer.CustomerOrders)
        {
            // Add the Order tree node to the array.
            myTreeNodeArray[countIndex] = new TreeNode(myOrder.OrderID,
              unselectedOrderImageIndex, selectedOrderImageIndex);
            countIndex++;
        }
        // Add the Customer tree node.
        TreeNode customerNode = new TreeNode(myCustomer.CustomerName,
            unselectedCustomerImageIndex, selectedCustomerImageIndex, myTreeNodeArray);
        myTreeView.Nodes[0].Nodes.Add(customerNode);
    }
}

解决方案 »

  1.   

    1、添加图片,你可以把图片的URL值赋给节点的ImageUrl属性就可以了。
    2、我理解你的问题的重点在于怎么判断父节点和子节点,如果是这样的话,就很容易:直接得到当前节点的子节点的个数就可以了,如果该节点没有子节点,那么就是子节点,否则就是父节点了啊。
      

  2.   

    TO: flyingFisher
        判断是否父节点还是子节点这个不难,我已经做到,问题是,我怎么让右键点父节点,出来菜单1,右键点子节点,出来菜单2。我怎么帮定菜单,这个是我不知道的。To: wangsaokui
      

  3.   

    TO: flyingFisher
        判断是否父节点还是子节点这个不难,我已经做到,问题是,我怎么让右键点父节点,出来菜单1,右键点子节点,出来菜单2。我怎么帮定菜单,这个是我不知道的。To: wangsaokui
        你的方法可以,但是它还是要通过ImageList,我就是想知道有没有什么方法,不通过ImageList,就能把图片给加上。再次感谢你们的回答!谢谢!
      

  4.   

    if (treeView.SelectedNode.PrevNode !=null)
    {
       if(treeView.SelectedNode.Parent == null)
       {
         //是根节点
       }
       else
       {
         //不是根节点
       }
    }
      

  5.   

    if (treeView.SelectedNode.PrevNode !=null)
    {
       if(treeView.SelectedNode.Parent == null)
       {
          treeview.ContextMenu=Menu1;
       }
       else
       {
         //不是根节点
         treeview.ContextMenu=Menu2;
       }
    }
      

  6.   

    可以把菜单的MenuItem赋给Arrary,然后在TreeView的初始化时是通过判断节点类型将不同的Arrary放入TreeNode的Tag中即可。
      

  7.   

    MSDN帮助中的说明
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbconsettingtreeviewicons.htm为 Windows 窗体 TreeView 控件设置图标
    Windows 窗体 TreeView 控件可在每个节点旁显示图标。图标紧挨着节点文本的左侧。若要显示这些图标,必须使树视图与 ImageList 控件相关联。有关图像列表的更多信息,请参见 Windows 窗体 ImageList 组件介绍和使用 Windows 窗体 ImageList 组件添加或移除图像。
      

  8.   

    //树控件:treeView1;两个右键菜单contextMenu1,contextMenu2:
    //在鼠标按下事件中处理
    private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    if(e.Button==System.Windows.Forms.MouseButtons.Right)
    {
    TreeNode tn =this.treeView1 .GetNodeAt(e.X,e.Y) as TreeNode;
    if(tn!=null)
    this.treeView1.SelectedNode = tn;
    if(treeView1.SelectedNode.Parent == null)
    {
    //是根节点
    this.treeView1 .ContextMenu = this.contextMenu1;
    }
    else
    {
    this.treeView1 .ContextMenu = this.contextMenu2;
    } }