TreeView 添加时间节点 年月日

本文介绍了一种在WinForm应用程序中使用TreeView组件显示时间数据的方法。通过从数据库获取时间数据,并将其转换为年、月、日的形式进行展示。实现了时间数据的层次化组织。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    WinForm中将时间添加到TreeView节点中

        /// <summary>
        /// 绑定时间
        /// </summary>
        private void BindTreeViewDate()
        {
            this.treeView1.Nodes.Clear();
            TreeNode nodeSelect = new TreeNode();
            TreeNode nodeSelectM = new TreeNode();
            TreeNode nodeSelectY = new TreeNode();
            string strsql = "select PiNumber from cn_TiaoMu group by PiNumber";
            DataTable dt = conn.GetData(strsql, "cn_TiaoMu");//得到数据
            if (dt != null && dt.Rows.Count > 0)
            {
                //绑定第一行时间
                TreeNode tn1 = new TreeNode();
                TreeNode tn2 = new TreeNode();
                TreeNode tn3 = new TreeNode();

                //将列数据20100414转化为时间格式
                DateTime date = DateTime.ParseExact(dt.Rows[0][0].ToString(),"yyyyMMdd",new CultureInfo("zh-CN"));

                tn1.Text = date.Year.ToString() + "年";
                tn1.Tag = date.ToShortDateString();
                this.treeView1.Nodes.Add(tn1);

                tn2.Text = date.Month.ToString() + "月";
                tn2.Tag = date.ToShortDateString();
                tn1.Nodes.Add(tn2);

                tn3.Text = date.Day.ToString() + "日";
                tn3.Tag = date.ToShortDateString();
                tn2.Nodes.Add(tn3);

                dt.Rows.RemoveAt(0); //移除第一行

                foreach (DataRow row in dt.Rows)
                {
                    DateTime dateNext = DateTime.ParseExact(row[0].ToString(),"yyyyMMdd",new CultureInfo("zh-CN"));

                    //绑定年
                    if (string.Compare(dateNext.Year.ToString() + "年", tn1.Text) != 0)
                    {
                        tn1 = new TreeNode();
                        tn2 = new TreeNode();
                        tn3 = new TreeNode();

                        tn1.Text = dateNext.Year.ToString() + "年";
                        tn1.Tag = dateNext.ToShortDateString();
                        this.treeView1.Nodes.Add(tn1);

                        tn2.Text = dateNext.Month.ToString() + "月";
                        tn2.Tag = dateNext.ToShortDateString();
                        tn1.Nodes.Add(tn2);

                        tn3.Text = dateNext.Day.ToString() + "日";
                        tn3.Tag = dateNext.ToShortDateString();
                        tn2.Nodes.Add(tn3);

                        if (nodeSelectY == null && dateNext.Year.ToString() == DateTime.Now.Year.ToString())
                        {
                            nodeSelectY = tn1;
                        }
                    }
                    //绑定月
                    else if (string.Compare(dateNext.Month.ToString() + "月", tn2.Text) != 0)
                    {
                        tn2 = new TreeNode();
                        tn3 = new TreeNode();

                        tn2.Text = dateNext.Month.ToString() + "月";
                        tn2.Tag = dateNext.ToShortDateString();
                        tn1.Nodes.Add(tn2);

                        tn3.Text = dateNext.Day.ToString() + "日";
                        tn3.Tag = dateNext.ToShortDateString();
                        tn2.Nodes.Add(tn3);

                        if (nodeSelectM == null && dateNext.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM"))
                        {
                            nodeSelectM = tn2;
                        }
                    }
                    //绑定日
                    else
                    {
                        tn3 = new TreeNode();

                        tn3.Text = dateNext.Day.ToString() + "日";
                        tn3.Tag = dateNext.ToShortDateString();
                        tn2.Nodes.Add(tn3);

                        if (dateNext.ToShortDateString() == DateTime.Now.ToShortDateString())
                        {
                            nodeSelect = tn3;
                        }
                    }
                }
            }

            this.treeView1.CollapseAll();
        }

例如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值