在尝试添加输入到我的文本框 (ScanIdBox) 并单击 AddButton 的数据后,我的 rootNode 似乎消失了,然后 TreeView 为空白。我不确定我在这里做错了什么,因为我是 Windows 窗体和 TreeViews 的新手。我想要做的是如果项目的长度为 8,则添加一个 parentNode,如果项目的长度为 9,则添加一个 childNode。我不希望根节点消失,但希望所有 8 个字符长的项目成为根节点下的父节点,并希望所有其他项都是最近添加的父节点的子节点。我怎样才能做到这一点?
public class Nodes
{
public TreeNode rootNode = new TreeNode();
public TreeNode parentNode = new TreeNode();
public TreeNode childNode = new TreeNode();
}
public void Scan_Form_Load(object sender, EventArgs e)
{
_boxNumberRepository = new BoxNumberRepository();
Nodes _rootNode = new Nodes();
_rootNode.rootNode.Text = "Scan ID";
BoxAndFileList.Nodes.Add(_rootNode.rootNode);
Text = "Scan Form";
AcceptButton = AddButton;
ScanIdLabel.Text = "Enter Scan ID #";
AddButton.Text = "Add";
RemoveButton.Text = "Remove";
}
public void PopulateTreeView()
{
Nodes _rootNode = new Nodes();
BoxAndFileList.Nodes.Clear();
ScanIdBox.Text = string.Empty;
var items = new List<string>(_boxNumberRepository.GetAllItems());
foreach (var boxNumber in items)
if (boxNumber.Length == 8)
{
_rootNode.rootNode.Nodes.Add(boxNumber);
}
else
{
_rootNode.parentNode.Nodes.Add(boxNumber);
}
}
public void AddButton_Click(object sender, EventArgs e)
{
var boxNumber = ScanIdBox.Text.Trim();
if (!String.IsNullOrEmpty(boxNumber))
{
_boxNumberRepository.AddItem(boxNumber);
PopulateTreeView();
}
}
编辑:弄清楚为什么节点消失了。我正在清除 PopulateTreeView 中的节点。评论了这一点,它卡住了。仍然无法弄清楚我在添加项目时做错了什么。他们仍然没有添加。
EDIT2:此代码现在允许我将项目添加到 TreeView,但它仍会删除 rootNode。我不完全确定我真的需要那个 rootNode,现在我想了想,所以我并不担心它。
public void PopulateTreeView()
{
BoxAndFileList.Nodes.Clear();
var items = new List<string>(_boxNumberRepository.GetAllItems());
foreach (var boxNumber in items)
BoxAndFileList.Nodes.Add(boxNumber);
ScanIdBox.Text = string.Empty;
}