在尝试添加输入到我的文本框(ScanIdBox)中的数据并单击Add Button后,我的rootNode似乎消失了,然后TreeView是空白的。我不确定我在这里做错了什么,因为我是Windows窗体和TreeView的新手。我想做的是,如果项目的长度为8,添加一个父节点,如果项目的长度为9,添加一个子节点。我不希望根节点消失,但希望所有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中的节点。我把它评论掉了,它就到处都是。仍然无法找出我在添加项目时做错了什么。他们仍然没有加入。
编辑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;
}
我最终放弃了TreeView。这可能很有效,但我只是简单地将一些东西添加到列表中。这些项目是按顺序添加的,所以没什么大不了的。这不是一个好的解决方案,但它奏效了,客户很高兴。
我相信您需要将代码更改为:
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添加到父节点,您不想清除这些节点。
问题内容: 我设置了一个tableView,以便在触摸一个单元格时,它的高度会扩展以显示更多信息。tableView有5个部分。 我有一个错误:当单元格扩展时,该单元格下面的所有headersCells都不可见。控制台输出以下内容:“ [31233:564745]没有正在重用的表单元格的索引路径” 在我的情节提要中,我有2个自定义单元:用于数据承载单元和标题。 如果我在开始/结束更新之间输入,尽管
有没有办法为一个TreeView设置两个根节点? 我发现很多例子,如果简单的树视图,但没有有用的例子,我的情况下。
我有一个Treeview控件结构,我在运行时生成,它通过单击专用按钮将文本从文本框中取出的子节点添加到父节点。 现在,随着更多的子节点添加到特定的父节点,我希望通过单击按钮来搜索该父节点中先前添加的子节点的名称(文本),以防止用户添加具有相同名称的重复节点。 如果发生这种情况,用户应该会收到一条消息,表明具有相同名称的子节点已添加到该特定父节点。我已经为相邻的子节点编写了解决此问题的代码,即,如果
Treeview小部件显示实现gtk.TreeModel接口的模型的内容。 PyGTK提供以下类型的模型 - gtk.ListStore gtk.TreeStore gtk.TreeModelSort ListStore是一个列表模型。 与gtk.TreeView小部件关联时,它会生成一个包含要从中选择的项的列表框。 使用以下语法声明gtk.ListStore对象 - store = gtk.Li
我有一个包含如下xml的字符串: 我需要在我的树视图中为每个缩进创建一个树节点,这样我可以在需要的时候扩展和收缩它,因为每个节点中都有这么多信息,我该怎么做? 结果应该是这样的: 非常感谢。
假设我有一个绑定项目源(可观察集合)的TreeView,我有这样的东西:http://docs.telerik.com/devtools/wpf/controls/radtreeview/how-to/howto-tri-state-mvvm 每个项目包括父视图都有一个复选框和名称(字符串)。 我想让子节点仅在检查父节点时可用。 如果父节点未被选中,所有子节点也将被取消选中。 有没有办法让我做到这