在尝试添加键入我的文本框(ScanIdBox)并单击AddButton的数据后,我的rootNode似乎消失了,然后TreeView就是空白。我不确定我在这里做错了什么,因为我是Windows Forms和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;
}
答案 0 :(得分:0)
我认为您需要将代码更改为:
public void PopulateTreeView()
{
var items = new List<string>(_boxNumberRepository.GetAllItems());
foreach (var boxNumber in items)
BoxAndFileList.SelectedNode.Nodes.Add(boxNumber);
ScanIdBox.Text = string.Empty;
}
注意使用SelectedNode添加到Parent,并且您不想清除节点。
答案 1 :(得分:0)
我最终废弃了TreeView。它可能很有用,但我只是将内容添加到列表中。这些项目是按顺序添加的,所以这不是什么大问题。不是一个好的解决方案,但它起作用,客户很高兴。