【发布时间】:2019-10-08 09:02:18
【问题描述】:
我目前正在尝试在我正在进行的一个小项目中实现搜索功能。关于该项目的一些背景知识,我有一个 xml,我从中导入一些存储在树视图中的数据。我的目标是能够给出一个字符串并在树视图中仅显示包含该特定字符串的节点。
对于下面的 xml,我的树视图看起来像这样
Breakfast
Belgian waffles
Strawberry Belgian Waffles
如果我选择一个节点,我有一个带有一些文本框的组框,其中包含每个项目的属性(价格、卡路里等)
我希望我的函数能够搜索任何东西......即,如果我给出价格,则以该价格在树视图中显示项目/项目,如果我搜索华夫饼以显示所有华夫饼。
<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>
Two of our famous Belgian Waffles with plenty of real maple syrup
</description>
<calories>650</calories>
</food>
<food>
<name>Strawberry Belgian Waffles</name>
<price>$7.95</price>
<description>
Light Belgian waffles covered with strawberries and whipped cream
</description>
<calories>900</calories>
</food>
</breakfast_menu>
我有一个递归函数,但在第 3 行(TreeNode t = treeNode.FirstNode)它会弹出一个空引用异常。我的猜测是,当它命中一个没有子节点的节点时会弹出这个异常,但我现在不知道如何处理它。
private void IterateRecursive(TreeNode treeNode)
{
TreeNode t = treeNode.FirstNode;
if (t!=null)
{
foreach (TreeNode tn in treeNode.Nodes)
{
IterateRecursive(tn);
}
}
if (!treeNode.Text.Contains(textBox_search_string.ToString()))
{
treeView1.Nodes.Remove(treeNode);
}
}
此外,如果我可以通过其他方式实现此搜索功能,我愿意接受建议。
【问题讨论】: