2011-04-07 44 views
1

我使用XtraTreeList控件。XtraTreeList中的图像列出现问题

有2列:第一文本和第二对图标

问题:我不能改变默认图标(零索引在对应图像列表)。图片列表中有3张图片。

比如我需要证明这是位于2指数

代码

TreeListColumn col = treeList1.Columns.Add(); 
      col.Caption = "Text"; 
      col.Visible = true; 

      TreeListColumn colImage = treeList1.Columns.Add(); 
      colImage.Caption = "ImageColumn"; 
      colImage.Visible = true; 


      RepositoryItemImageEdit imageEdit = new RepositoryItemImageEdit(); 
      imageEdit.Images = imageList; 

      treeList1.RepositoryItems.Add(imageEdit); 
      colImage.ColumnEdit = imageEdit; 

      treeList1.BeginUnboundLoad(); 

      TreeListNode node = treeList1.AppendNode(new object[] { "trololo", 2}, null); 

      node.SetValue(colImage.AbsoluteIndex, 2); 

      treeList1.EndUnboundLoad(); 
+0

你想在节点旁边有不同的图标(如visua studio中的解决方案资源管理器)?或另一列中的图像? – manji 2011-04-07 07:47:36

+0

图像在另一列,这就是为什么我必须使用XtraTreeList而不是标准TreeView – VoimiX 2011-04-07 08:28:30

回答

1

感谢大家

使用RepositoryItemPictureEdit解决我的问题。有点复杂,但作品

TreeListColumn col = treeList1.Columns.Add(); 
      col.Caption = "Text"; 
      col.Visible = true; 

      TreeListColumn colImage = treeList1.Columns.Add(); 
      colImage.Caption = "ImageColumn"; 
      colImage.Visible = true; 

      RepositoryItemPictureEdit imageEdit = new RepositoryItemPictureEdit(); 
      imageEdit.ShowMenu = false; 

      treeList1.RepositoryItems.Add(imageEdit); 
      colImage.ColumnEdit = imageEdit; 

      treeList1.BeginUnboundLoad(); 

      Image img = imageList.Images[1]; 
      Bitmap bmp = new Bitmap(img); 

      TreeListNode node = treeList1.AppendNode(new object[] { "trololo", bmp }, null); 


      treeList1.EndUnboundLoad(); 
0

这个任务应该使用略有不同的方法来实现图标。首先,你应该使用RepositoryItemImageComboBox并填充它的Items属性。每个项目都有值和ImageIndex。 TreeList将显示在其值等于单元格值的项目的单元格图像中。这里是一个要为你工作的代码:

 TreeListColumn col = treeList1.Columns.Add(); 
     col.Caption = "Text"; 
     col.Visible = true; 

     TreeListColumn colImage = treeList1.Columns.Add(); 
     colImage.Caption = "ImageColumn"; 
     colImage.Visible = true; 


     RepositoryItemImageComboBox imageEdit = new RepositoryItemImageComboBox(); 
     imageEdit.SmallImages = imageList; 
     for(int i = 0; i < 3; i++) 
      imageEdit.Items.Add(new ImageComboBoxItem(i, i)); // i.e. value and image index 

     treeList1.RepositoryItems.Add(imageEdit); 
     colImage.ColumnEdit = imageEdit; 

     treeList1.BeginUnboundLoad(); 

     TreeListNode node = treeList1.AppendNode(new object[] { "trololo", 2 }, null); 

     node.SetValue(colImage.AbsoluteIndex, 2); 

     treeList1.EndUnboundLoad(); 
+0

感谢您的解决方案。但我只需要在单元格中显示图像。我不需要组合框。只有简单的图像。我脑海中的任务非常简单。这就是为什么我使用RepositoryItemImageEdit – VoimiX 2011-04-07 08:12:03

+0

我认为这个解决方案将为你工作,如果组合框按钮被隐藏,除非你想完全用一个图像填充一个单元格。 – manji 2011-04-07 08:58:19

+0

@DevExpress Team,我认为这行'node.SetValue(colImage.AbsoluteIndex,2);'可以被删除,对吧? – manji 2011-04-07 08:58:56