После попытки добавления данных, введенных в текстовое поле (ScanIdBox) и щелчка на AddButton, мой rootNode, похоже, исчез, а TreeView затем пуст. Я не уверен, что я делаю неправильно здесь, так как я новичок в Windows Forms и TreeViews. То, что я пытаюсь сделать, это добавить parentNode, если длина элемента равна 8 и childNode, если длина элемента равна 9. Я не хочу, чтобы корневой узел исчез, но хотите, чтобы все элементы длиной 8 символов были родительского узла под корневым узлом и хотите, чтобы все остальные элементы были дочерними узлами последнего добавленного родительского узла. Как я могу это сделать?Исчезающие узлы в TreeView
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();
}
}
EDIT: выяснено, почему узел исчезает. Я очищал узлы в 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;
}
Ничто в методе 'PopulateTreeView', кажется, ничего не добавляет к' BoxAndFileList'. Я не знаю много о древовидном представлении, но, возможно, добавлю что-то похожее на 'BoxAndFileList.Nodes.Add (_rootNode.rootNode);' (как у вас в методе 'Scan_Form_Load'? –