c#Winforms中的分层树视图,带有大陆,国家,城市

Posted

技术标签:

【中文标题】c#Winforms中的分层树视图,带有大陆,国家,城市【英文标题】:hierarchical treeview in c# Winforms with continent, nation, city 【发布时间】:2020-01-03 11:42:08 【问题描述】:

我有一个 SQL 表:

地区国家城市

欧洲奥地利维也纳

欧洲奥地利格拉茨

APA 澳大利亚悉尼

等等……等等……

基本上是地区、国家和城市。

我想构建一个分层树视图,例如:

-欧洲

--奥地利

---格拉茨

---维也纳

-APA

--澳大利亚

---悉尼

我使用 Datatable 从数据库中获取数据。

有人可以帮助我完成循环 FOR 和各种嵌套 if 来完成吗? 非常感谢提前

【问题讨论】:

【参考方案1】:

尝试以下:

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

namespace WindowsFormsApplication51

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();

            try
            
                DataTable dt = new DataTable();
                dt.Columns.Add("REGION", typeof(string));
                dt.Columns.Add("NATION", typeof(string));
                dt.Columns.Add("CITY", typeof(string));

                dt.Rows.Add(new object[]  "Europe", "Austria", "Wien" );
                dt.Rows.Add(new object[]  "Europe", "Austria", "Graz" );
                dt.Rows.Add(new object[]  "APA", "Australia", "Sidney" );

                foreach (var region in dt.AsEnumerable().GroupBy(x => x.Field<string>("REGION")))
                
                    TreeNode regionNode = new TreeNode(region.Key);
                    treeView1.Nodes.Add(regionNode);
                    foreach (var nation in region.GroupBy(x => x.Field<string>("NATION")))
                    
                        TreeNode nationNode = new TreeNode(nation.Key);
                        regionNode.Nodes.Add(nationNode);
                        foreach (string city in nation.Select(x => x.Field<string>("CITY")))
                        
                            TreeNode cityNode = new TreeNode(city);
                            nationNode.Nodes.Add(cityNode);
                        
                    
                
            
            catch (Exception ex)
            
                Console.WriteLine(ex.Message);
            
            treeView1.ExpandAll();
        
    

【讨论】:

以上是关于c#Winforms中的分层树视图,带有大陆,国家,城市的主要内容,如果未能解决你的问题,请参考以下文章

在具有分层数据模板的树视图中绑定上下文菜单命令

在 winforms 中使用控件(链接标签、树视图)

重命名列表视图中的项目c#WinForms

C# WinForms 面板问题

WinForms 中的 C# 虚拟列表视图

在带有选项卡的 Winforms 的模型视图演示器中应该使用多少个演示器?