嘗試添加鍵入到我的文本框(ScanIdBox)中的數據並單擊AddButton後,我的rootNode似乎消失了,TreeView變爲空白。我不確定我在這裏做錯了什麼,因爲我對Windows窗體和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();
}
}
編輯:找出爲什麼節點正在消失。我正在清除PopulateTreeView中的節點。評論說,它停留在周圍。仍然無法弄清楚我做錯了添加項目。他們仍然沒有添加。
編輯2:此代碼現在允許我將項目添加到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'方法中那樣)? –