【发布时间】:2019-07-24 09:07:03
【问题描述】:
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 Treeview_Test
{
public partial class Form1 : Form
{
int numberofroots = 1000;
int childsnum = 50;
int leveldepth = 0;
public Form1()
{
InitializeComponent();
AddNodes();
}
private void AddNodes()
{
advancedTreeView1.Nodes.Clear();
for (int i = 0; i < numberofroots; i++)
{
advancedTreeView1.Nodes.Add("New Node " + i.ToString());
TreeNode subnode = advancedTreeView1.Nodes[i];
if(allRootsWithChilds.Checked)
{
subnode.Nodes.Add("New Node " + i.ToString());
}
else
{
if (i < childsnum)
{
subnode.Nodes.Add("New Node " + i.ToString());
}
}
}
}
private void allRootsWithChilds_CheckedChanged(object sender, EventArgs e)
{
AddNodes();
}
}
}
现在,如果选中该复选框,它将向所有根节点添加一个子节点。所有 1000 个根节点都将有一个子节点。如果未选中,则仅 1000 个根节点中的前 50 个将有一个子节点。
我现在要做的是,如果复选框被选中,或者是否有一个子节点的根节点,我想决定深度级别。例如,如果深度级别为 1,则前 50 个根节点或所有根节点将有一个子节点。
但是如果深度级别例如为 4,那么每个根节点如果是 50 或全部将有 4 个子节点:
Node0
Node1
Node2
Node3
Node4
Node1
Node1
Node2
Node3
Node4
....
Node49
Node1
Node2
Node3
Node4
变量 childsnum 决定有多少根节点将有子节点。 变量 leveldepth 应该决定将子节点添加到每个根节点的深度。 然后我想添加另一个 int 变量来决定每个级别有多少个孩子。
例如,在级别 3 中,每个根节点将有 50 个节点。 而在级别 1,每个根节点只有 1 个节点。
【问题讨论】:
-
当你有两个独立的
if语句,它们都具有相同的主体,你可以合并子句:if(allRootsWithChilds.Checked || i < childsnum) subnode.Nodes.Add("New Node " + i.ToString());然后你只需要更新一个if语句的块。跨度>