c#WINFORM中treeview怎么进行数据绑定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#WINFORM中treeview怎么进行数据绑定相关的知识,希望对你有一定的参考价值。

参考技术A 类似于wpf那样的数据绑定不推荐用在winform中,你可以使用递归的方式建立一个TreeView,举个例子,你可以这么写:
privatevoid InitializeTreeView()

treeView1.BeginUpdate();
treeView1.Nodes.Add("Parent");
treeView1.Nodes[0].Nodes.Add("Child 1");
treeView1.Nodes[0].Nodes.Add("Child 2");
treeView1.Nodes[0].Nodes[1].Nodes.Add("Grandchild");
treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Great Grandchild");
treeView1.EndUpdate();
本回答被提问者和网友采纳
参考技术B 不支持

winform(数据导出TreeView的使用)

一、数据导出:
目标: 将数据库的数据导出成Excel工作表或是Word文档

基本步骤:

1、首先将数据库中的数据封装成实体类

2、写好查询数据的方法,在主窗体中调用查看所有的数据

3、利用saveFileDialog 和StreamWriter将数据导出去,期间需要用到HTML中的table表格结构

即<table>

<tr><td></td></tr>

</table>

方法1:用字符串拼接,但此法效率低

方法2:

List<Users> list = new List<Users>();

        public Form1()
        {
            InitializeComponent();

            list = new UsersData().Select();

            int id = 1;

            foreach (Users u in list)//遍历数据库中的所有数据放到泛型集合中
            {
                ListViewItem li = new ListViewItem();
                li.Text = id.ToString();
                li.SubItems.Add(u.UserName);
                li.SubItems.Add(u.PassWord);
                li.SubItems.Add(u.NickName);
                li.SubItems.Add(u.SexStr);
                li.SubItems.Add((DateTime.Now.Year - u.Birthday.Year).ToString());
                li.SubItems.Add(u.BirthdayStr);
                li.SubItems.Add(u.NationName);

                listView1.Items.Add(li);
                id++;
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Filter = "Excel工作表|*.xlsx|Word文档|*.doc";//保存的时候需要显示的文件保存类型
            saveFileDialog1.FileName = DateTime.Now.Year + "" + DateTime.Now.Month + "月人员数据";//文件默认名称
            DialogResult dr = saveFileDialog1.ShowDialog(); //获取一个用户要保存的路径
            if (dr == DialogResult.OK)
            {
                StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
                int id = 1;

                StringBuilder ss = new StringBuilder();
                ss.Append("<table border=\"1\">");
                ss.Append("<tr><td>序号</td><td>用户名</td><td>密码</td><td>昵称</td><td>性别</td><td>年龄</td><td>生日</td><td>民族</td></tr>");
                
                foreach (Users u in list)
                {
                    ss.Append("<tr>");
                    ss.Append("<td>" + id + "</td>");
                    ss.Append("<td>" + u.UserName + "</td>");
                    ss.Append("<td>" + u.PassWord + "</td>");
                    ss.Append("<td>" + u.NickName + "</td>");
                    ss.Append("<td>" + u.SexStr + "</td>");
                    ss.Append("<td>" + (DateTime.Now.Year - u.Birthday.Year) + "</td>");
                    ss.Append("<td>" + u.BirthdayStr + "</td>");
                    ss.Append("<td>" + u.NationName + "</td>");
                    ss.Append("</tr>");

                    id++;
                }
                ss.Append("</table>");
                sw.Write(ss);
                sw.Close();
            }

二、 TreeView的使用

1、依然是将数据库中的数据封装成实体类

2、写查询所有数据的方法(以下以中国、省、市、县为例)

3.主窗体中的按钮事件和方法

private void button1_Click(object sender, EventArgs e)
        {
            List<ChinaStates> list1 = new ChinaData().Select();
            TreeNode tn = new TreeNode("中国");
            tn.Tag = "0001";//用户自定义数据
            treeView1.Nodes.Add(tn);
            TreeViewBind(tn, list1);

        }

        private static void TreeViewBind(TreeNode tn, List<ChinaStates> list)
        {
            foreach (ChinaStates c in list)
            {
                if (c.ParentAreaCode == tn.Tag.ToString())
                {
                    TreeNode tnn = new TreeNode(c.AreaName);
                    tnn.Tag = c.AreaCode;
                    tn.Nodes.Add(tnn);
                    TreeViewBind(tnn, list);
                }
            }
private void button1_Click(object sender, EventArgs e)
        {
            List<ChinaStates> list1 = new ChinaData().Select();
            TreeNode tn = new TreeNode("中国");
            tn.Tag = "0001";
            treeView1.Nodes.Add(tn);
            tn.Nodes.Add(new TreeNode("加载中..."));
        }

        private static void TreeViewBind(TreeNode tn, List<ChinaStates> list)
        {
            List<ChinaStates> list = new ChinaData().Select(tn.Tag.ToString());
            foreach (ChinaStates c in list)
            {
                TreeNode tnn = new TreeNode(c.AreaName);
                tnn.Tag = c.AreaCode;
                tn.Nodes.Add(tnn);
                tnn.Nodes.Add(new TreeNode("加载中..."));
            }
        }

        private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
        {
            List<ChinaStates> list = new ChinaData().Select(e.Node.Tag.ToString());
            e.Node.Nodes.Clear();
            foreach (ChinaStates c in list)
            {
                TreeNode tnn = new TreeNode(c.AreaName);
                tnn.Tag = c.AreaCode;
                e.Node.Nodes.Add(tnn);
                tnn.Nodes.Add(new TreeNode("加载中..."));
            }
        }

ToolTip后台代码

1.ToolTip.Show时显示不能隐藏解决方法:

  this.toolTip1.Dispose();
            this.toolTip1 = new ToolTip();
           this.toolTip1.Show("个性签名更新:"+U.Write,this.U_Write);

2.

ToolTip toolTip1 = new ToolTip();
            toolTip1.AutoPopDelay = 5000;
            toolTip1.InitialDelay = 1000;
           toolTip1.ReshowDelay = 500;
            toolTip1.ShowAlways = true;
            toolTip1.SetToolTip(this.U_Write, "个性签名更新:" + U.Write);

 

以上是关于c#WINFORM中treeview怎么进行数据绑定的主要内容,如果未能解决你的问题,请参考以下文章

c#winform程序中,左侧放treeview,右侧的显示格式不定该怎么做

C#-WinForm-Treeview-树状模型

C# winform开发中,如果treeview的节点太多,导致加载很慢,怎么做可以提给效率?

winform窗体 Treeview控件子节点动态添加图片

C# winform treeview 节点展开状态的图标设置

winform。 listview 更新数据后刷新