2014-06-19 17 views
2

我有一些圖標應該顯示在RowObject名稱旁邊的第一列中。 不同的圖片涉及不同類型的obects。 這部分代碼創建了包含我需要的對象的列。如何在TreeListView中設置每個對象的圖標

this.descriptionTView = new BrightIdeasSoftware.TreeListView(); 
    this.descriptionTView.CanExpandGetter = x => 
    { 
    if ((x as ITreeViewItem).Items != null) 
     { 
     return (x as ITreeViewItem).Items.Length > 0; 
     } 
    else 
     { 
     return false; 
     } 
    };     

    this.descriptionTView.ChildrenGetter = x => (x as ITreeViewItem).Items; 

    var column1 = new BrightIdeasSoftware.OLVColumn("", "Part0"); 
    column1.AspectGetter = x => (x as ITreeViewItem).Part0; 
    column1.IsEditable = true; 

    var column2 = new BrightIdeasSoftware.OLVColumn("", "Part1"); 
    column2.AspectGetter = x => (x as ITreeViewItem).Part1; 
    column1.IsEditable = true; 
    column2.IsEditable = true; 

    this.descriptionTView.Columns.Add(column1); 
    this.descriptionTView.Columns.Add(column2); 
    private List<ITreeViewItem> itemsList; 
    descriptionTView.Roots = itemsList; 
+0

我相信直接將圖像[這個答案](HTTP://計算器.com/a/12728738/3521452)是你正在尋找的。 – Tom

+0

您是否需要添加更多詳細信息併發布代碼片段?沒有任何信息無法幫助你。 – Max

+0

在ObjectListView中我們不使用TreeNode或Node來添加不同的對象。 –

回答

2

你必須爲所需的列

column1.ImageGetter = delegate(object rowObject) { 
    // decide depending on the rowObject which image to return 
    return 0; 
}; 

您也可以創建並分配包含要這樣使用例如圖像將ImageList

descriptionTView.SmallImageList = imageList1; 

然後你就可以實現一個ImageGetter返回列表中圖像的名稱,而不是索引。

您可能必須設置

descriptionTView.OwnerDraw = true; 

另一種方法是從該行對象使用ImageAspectName

column1.ImageAspectName = "MyImage"; // Assuming your object has a property `public BitMap MyImage;` 
+0

謝謝。你真的幫了我。 –

0

你需要一個ImageList添加到您的TreeView,在這之後,你可以設置一個節點與ImageKey屬性。

+0

我不使用節點。我的對象不包含ImageKey屬性。 –

相關問題