2011-04-07 9 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

+0

다른 열의 이미지, 왜 표준 TreeView 대신 XtraTreeList를 사용해야합니까? – VoimiX

답변

1

감사 : 여기 당신을 위해 일해야하는 코드입니다. 조금 복잡하지만 작동 함

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 속성을 채워야합니다. 각 항목에는 value와 ImageIndex가 있습니다. TreeList는 값이 셀 값과 동일한 항목의 셀 이미지에 표시됩니다. RepositoryItemPictureEdit 내 문제를 해결하여 모두

에 대한

 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

+0

이미지를 완전히 셀에 넣지 않으려면 콤보 상자 단추가 숨겨져 있으면이 솔루션이 유용 할 것입니다. – manji

+0

@DevExpress Team,이 줄'node.SetValue (colImage.AbsoluteIndex, 2); '는 제거 될 수 있다고 생각합니다. – manji

관련 문제