場景
Winform控件-DevExpress18下載安裝注冊以及在VS中使用:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243
在上面安裝完DevExpress的基礎上使用其Treelist控件。
然后就可以新建數據源的List,並賦值給TreeList。
效果
實現
新建Winform程序,然后拖拽一個TreeList
新建數據源類TreeNode
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DevExpressSimple { class TreeNode { //標識Id private string id; //父級節點ID private string parentId; //節點顯示文本 private string nodeText; public string NodeText { get { return nodeText; } set { nodeText = value; } } public string ParentId { get { return parentId; } set { parentId = value; } } public string Id { get { return id; } set { id = value; } } } }
雙擊窗體進入窗體的加載事件中。
private void Form1_Load(object sender, EventArgs e) { string keyFieldName = "Id"; string parentFieldName = "ParentId"; //新建list數據源 List<TreeNode> data = new List<TreeNode>(); data.Add(new TreeNode() { Id = "root", ParentId = String.Empty, NodeText = "測試1" }); data.Add(new TreeNode() { Id = "first", ParentId = "root", NodeText = "測試2" }); //列 DevExpress.XtraTreeList.Columns.TreeListColumn colNode = new DevExpress.XtraTreeList.Columns.TreeListColumn(); //設置名字 colNode.Name = "名字"; //設置標題 colNode.Caption = "標題"; //設置從數據源分配給當前列的字段名。 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; //先清除列 this.treeList1.Columns.Clear(); //將列數組添加到集合的結尾。 this.treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] { colNode }); #region 綁定數據源 //設置屬性KeyFieldName ParentFieldName //設置一個值,該值指定綁定到XtratreeList控件的數據源的鍵字段 this.treeList1.KeyFieldName = keyFieldName; //設置一個值,該值表示標識此數據源中父記錄的數據源字段。 this.treeList1.ParentFieldName = parentFieldName; this.treeList1.DataSource = data; //刷新數據 this.treeList1.RefreshDataSource(); #endregion }
注:
1.list就是要顯示的數據源,其中Id屬性就是別的節點指定父節點的標志。
2.ParentId就是指定父節點,對應節點的Id屬性,如果是根節點,則父節點為空。
3.NodeText就是節點要顯示的文本。
4.給list賦值之后,還要告訴TreeList對應的關系,所以需要設置treelist的兩個屬性
KeyFiledName和ParentFiledName。其中KeyFiledName是指定綁定到控件的數據源的鍵字段,就是指定上面的Id,即作為節點標志的字段。
ParentFiledName是標志此數據 源中父記錄的數據源字段。
5.然后還要使用TreeListColumn新建列對象,設置列相關的一些屬性,還要通過FieldName指定從數據源中取哪個字段分配給這列。
6.更多的屬性直接通過源碼中查看源碼屬性獲取。
源碼下載
https://download.csdn.net/download/badao_liumang_qizhi/11614224