美好的一天,
有人可以帮助我填充带有子对象的树视图。
我的文件布局如下所示。
Fruits
apple,green,red
banana,yellow,green
Vegtables
Pumpkin,yellow
Beans,Green
Output should be :
+Fuits
-apple,green,red
-banana,yellow,green
+Vegtables
-Pumpkin,yellow
-Beans,Green
我正在使用正则表达式来匹配我的字符串,如果我找到了一个Header我想要创建一个父节点,如果在标题下找到了一个子项,我想创建一个子节点。
匹配部分100%工作但我的树视图无效。
int counter = 0;
if (filename.Trim() != string.Empty)
{
System.IO.StreamReader file = new System.IO.StreamReader(filename);
string[] columnnames = file.ReadLine().Split(' ');
while ((line = file.ReadLine()) != null)
{
Match match = regex.Match(line); //Match Header
Match matchSub = regexSub.Match(line);//Match Detail
TreeNode newNode = new TreeNode();
if (match.Success)
{
newNode.Text = line;
treeCards.Nodes.Add(newNode);
}
else if (matchSub.Success)
{
TreeNode newNode1 = new TreeNode();
newNode.Nodes.Add(newNode1);
}
counter++;
}
}
答案 0 :(得分:0)
问题是您正在创建一个新的树节点,表示while循环的每次迭代的标头。但是,只有在找到标题时(即match.Success == true
时)才应创建它。尝试这样的事情:
var currentHeader = null;
while ((line = file.ReadLine()) != null)
{
Match match = regex.Match(line); //Match Header
Match matchSub = regexSub.Match(line);//Match Detail
if (match.Success)
{
currentHeader = new TreeNode();
currentHeader .Text = line;
treeCards.Nodes.Add(currentHeader);
}
else if (matchSub.Success)
{
var newNode = new TreeNode();
newNode.Text = line;
currentHeader.Nodes.Add(newNode1);
}
counter++;
}
我认为你的正则表达式正常工作。此外,请注意此代码不执行任何验证。如果输入文件格式错误,则可能导致异常。我建议在程序中添加验证步骤。