DevExpress的TreeList怎樣給樹節點設置圖標

来源:https://www.cnblogs.com/badaoliumangqizhi/archive/2019/10/25/11738760.html
-Advertisement-
Play Games

場景 DevExpress的TreeList怎樣設置數據源使其顯示成單列樹形結構: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102742426 在上面設置TreeList的數據源並設置其為樹形結構後,如何給樹形結構設置圖標 ...


場景

DevExpress的TreeList怎樣設置數據源使其顯示成單列樹形結構:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102742426

在上面設置TreeList的數據源並設置其為樹形結構後,如何給樹形結構設置圖標

 

 

註:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關註公眾號
霸道的程式猿
獲取編程相關電子書、教程推送與免費下載。

實現

首先按照上面搭建好樹形結構和設置數據源之後效果如下

 

 

然後在項目下新建Resources目錄,將圖標文件複製進去

然後在窗體類中獲取圖標數組

 public static System.Drawing.Image[] imgs = new System.Drawing.Image[] { 
            System.Drawing.Image.FromFile(@"../../Resources/a.png"),
            System.Drawing.Image.FromFile(@"../../Resources/b.png"),
            System.Drawing.Image.FromFile(@"../../Resources/c.png")
        };

 

這裡路徑為什麼是兩層上級目錄,因為Resources目錄相對應bin/debug的目錄如此

 

 

 

然後在窗體載入完的事件中對TreeList設置完數據源之後,設置每個節點的圖標。

System.Windows.Forms.ImageList imgList = new System.Windows.Forms.ImageList();
imgList.Images.AddRange(imgs);
treeList1.SelectImageList = imgList;
treeList1.Nodes.FirstOrDefault().ImageIndex = 0;
treeList1.Nodes.FirstOrDefault().FirstNode.ImageIndex = 1;
treeList1.Nodes.FirstOrDefault().FirstNode.FirstNode.ImageIndex = 2;

 

這裡是通過treeList1.Nodes.FirstOrDefault()找到第一個節點或者預設節點,即根節點。

然後通過FirstNode找到第一個子節點。

然後treeList1.SelectImageList = imgList設置其圖標源是一個圖標數組。

然後指定每個節點的ImageIndex 就是在圖標數組中的索引。

完整示例代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TreeListTest
{
    public partial class Form1 : Form
    {
       
        public static System.Drawing.Image[] imgs = new System.Drawing.Image[] { 
            System.Drawing.Image.FromFile(@"../../Resources/a.png"),
            System.Drawing.Image.FromFile(@"../../Resources/b.png"),
            System.Drawing.Image.FromFile(@"../../Resources/c.png")
        };

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

           
            #region 設置列頭、節點指示器面板、表格線樣式

            treeList1.OptionsView.ShowColumns = false;             //隱藏列標頭
            treeList1.OptionsView.ShowIndicator = false;           //隱藏節點指示器面板
            treeList1.OptionsView.ShowHorzLines = false;           //隱藏水平表格線
            treeList1.OptionsView.ShowVertLines = false;           //隱藏垂直表格線
            treeList1.OptionsView.ShowIndentAsRowStyle = false;

            #endregion

            #region 初始禁用單元格選中,禁用整行選中

            treeList1.OptionsView.ShowFocusedFrame = true;                               //設置顯示焦點框
            treeList1.OptionsSelection.EnableAppearanceFocusedCell = false;              //禁用單元格選中
            treeList1.OptionsSelection.EnableAppearanceFocusedRow = false;               //禁用正行選中

            #endregion

            #region 設置TreeList的展開摺疊按鈕樣式和樹線樣式

            treeList1.OptionsView.ShowButtons = true;                  //顯示展開摺疊按鈕
            treeList1.LookAndFeel.UseDefaultLookAndFeel = false;       //禁用預設外觀與感覺
            treeList1.LookAndFeel.UseWindowsXPTheme = true;            //使用WindowsXP主題
            treeList1.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Percent50;     //設置樹線的樣式

            #endregion

            #region 添加單列

            DevExpress.XtraTreeList.Columns.TreeListColumn colNode = new DevExpress.XtraTreeList.Columns.TreeListColumn();
            colNode.Name = String.Format("col{0}", "NodeText");
            colNode.Caption = "NodeText";
            colNode.FieldName = "NodeText";
            colNode.VisibleIndex = 0;
            colNode.Visible = true;

            colNode.OptionsColumn.AllowEdit = false;                        //是否允許編輯
            colNode.OptionsColumn.AllowMove = false;                        //是否允許移動
            colNode.OptionsColumn.AllowMoveToCustomizationForm = false;     //是否允許移動至自定義窗體
            colNode.OptionsColumn.AllowSort = false;                        //是否允許排序
            colNode.OptionsColumn.FixedWidth = false;                       //是否固定列寬
            colNode.OptionsColumn.ReadOnly = true;                          //是否只讀
            colNode.OptionsColumn.ShowInCustomizationForm = true;           //移除列後是否允許在自定義窗體中顯示

            treeList1.Columns.Clear();
            treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] { colNode });

            #endregion

            treeList1.KeyFieldName = "Id";
            treeList1.ParentFieldName = "ParentId";

            DataTreeNode node1 = new DataTreeNode();
            node1.Id = "1";
            node1.ParentId = null;
            node1.NodeText = "1公眾號";

            DataTreeNode node11 = new DataTreeNode();
            node11.Id = "2";
            node11.ParentId = "1";
            node11.NodeText = "1-1霸道的程式猿";

            DataTreeNode node111 = new DataTreeNode();
            node111.Id = "3";
            node111.ParentId = "2";
            node111.NodeText = "1-1-1大量編程資源";


            List<DataTreeNode> data = new List<DataTreeNode>();

            data.Add(node1);
            data.Add(node11);
            data.Add(node111);
            
            treeList1.DataSource = data;
            treeList1.RefreshDataSource();

            System.Windows.Forms.ImageList imgList = new System.Windows.Forms.ImageList();
            imgList.Images.AddRange(imgs);

            treeList1.SelectImageList = imgList;

          
            
            treeList1.Nodes.FirstOrDefault().ImageIndex = 0;
            treeList1.Nodes.FirstOrDefault().FirstNode.ImageIndex = 1;
            treeList1.Nodes.FirstOrDefault().FirstNode.FirstNode.ImageIndex = 2;
        }
    }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、高併發伺服器實現一 本文轉載 轉載地址 2、高併發伺服器實現二 本文轉載 轉載內容在於學習C#實現的高併發伺服器 以下個人觀點 1 需要註意SocketAsyncEventArgs的使用 2 做到每個連接對象有自己的各種緩存機制,包括接送字元串、發送字元串等 3 註意粘包的處理,分包和解包 4 ...
  • CPF(暫時命名)(Cross platform framework),模仿WPF的框架,支持NETCore的跨平臺UI框架,暫時不夠完善,只用於測試,暫時只支持Windows和Mac。支持數據綁定,CSS,動畫。。。 可能有人會說,不是有個開源的Avalonia ,我試過,不過他的性能不行,啟動速 ...
  • 使用LinqDB查詢Sqlite資料庫數據,不管是大數據還是少量的數據,感覺特別耗時,尤其是首次查詢 一個含有2.7萬條數據的數據表 首次查詢: 查詢2.7萬條數據,耗時1s 查詢8條數據,也要耗時750ms 二次查詢: 查詢2.7萬條數據,耗時475ms 查詢指定的1條數據,耗時73ms 我們來嘗 ...
  • 當使用Sql語句查詢資料庫,返回DataSet數據集。 DataSet轉化為數據列表,可以通過映射方式直接返回Entity數據列表 新建一個特性類,用於資料庫列表列名稱映射 LinqToDB提供了一個ColumnAttribute,但是通過反射不方便獲取ColumnAttribute獲取Custom ...
  • 一、簡介 1.break語句:迴圈-迴圈中斷並停止,退出當前迴圈; 流程圖: 2.continue:迴圈-迴圈下一次迭代繼續執行。 流程圖: 執行過程:立即結果本次迴圈,判斷迴圈條件,如果成立,則進入下一次迴圈,否則退出本次迴圈。 舉例:我編寫的代碼時候,上個廁所,回來繼續編寫代碼。 二、實例 練習 ...
  • 一、簡介 嵌套迴圈:while、for和do...while迴圈使用一個或者多個嵌套。 二、實例 輸出九九乘法表(迴圈的嵌套) 輸出結果 ...
  • 場景 DevExpress的TreeList怎樣給樹節點設置圖標: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102745542 在上面這篇博客中有具體的應用。 註: 博客主頁:https://blog.csdn.net/ba ...
  • 一、簡介 在for和while的迴圈是在頭部寫測試迴圈條件,而do....while的迴圈是在迴圈的尾部寫測試條件 do...while的迴圈和while的類似,但是do...while的最少執行一次迴圈體。 二、語法 do{ 迴圈體; } while{ 條件; } 三、執行過程 程式先執行do{} ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...