foreach 循环完毕以后程序自动关闭?

phuai007 2010-10-25 10:04:54

//查找关键字
TreeNode tnRet = null;
String [] search = null;
int i = 0;
int k;
foreach (TreeNode tn in treeView1.Nodes)
{
tnRet = FindNode(tn, word);
if (tnRet != null)
{
search[i] = tnRet.Text;
i++;
循环完毕以后整个程序就退出了,也没有提示错误
}

}
if (i > 0)
{
for (k = 0; k < search.Length; k++)
{
MessageBox.Show(search[k].ToString());
}
}
else
{
MessageBox.Show("没有找到包含 " + word + " 的相关影片\n请尝试更换其他关键字搜索", "没有找到", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}


为什么循环完毕以后,整个程序就自动关闭了?也没任何异常提示
...全文
193 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
weakey 2010-10-25
  • 打赏
  • 举报
回复
phuai007 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 phil999 的回复:]
List<string> search = new ...

...

if (tnRet != null)
{
search.Add(tnRet.Text);//将搜索结果写入数组

...
[/Quote]

哥哥,你是对的,问题解决了!
phil999 2010-10-25
  • 打赏
  • 举报
回复
List<string> search = new ...

...

if (tnRet != null)
{
search.Add(tnRet.Text);//将搜索结果写入数组

...
phil999 2010-10-25
  • 打赏
  • 举报
回复
汗,哥哥,你还是改用 List<string> 吧,数组不是这样用的
phuai007 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 phil999 的回复:]
String [] search = null;
search怎么是null
[/Quote]
因为搜索结果不定,所以数组的个数不定

完整代码:

//影片搜索
private void button5_Click(object sender, EventArgs e)
{
String word = textBox1.Text;
if (word == "" || word == "输入影片名")
{
MessageBox.Show("请输搜索关键字", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
//查找关键字
TreeNode tnRet = null;
String [] search = null;
int i = 0;
int k;
foreach (TreeNode tn in treeView1.Nodes)
{
tnRet = FindNode(tn, word);
if (tnRet != null)
{
search[i] = tnRet.Text;//将搜索结果写入数组
MessageBox.Show("测试有无执行");
i++;
}
}
if (i > 0) //添加搜索结果到新节点
{
TreeNode trRoot = new TreeNode("搜索结果");
this.treeView1.Nodes.Add(trRoot);
for (k = 0; k < search.Length; k++)
{
TreeNode trNode = new TreeNode(search[k]);
trRoot.Nodes.Add(trNode);
}
}
else
{
MessageBox.Show("没有找到相关影片");
}
}
}


执行搜索,如果没有任何记录,程序返回正常,弹出没有找到影片对话框,如果有记录,则直接退出了。连MessageBox.Show("测试有无执行");这句都无输出。
phil999 2010-10-25
  • 打赏
  • 举报
回复
String [] search = null;
search怎么是null
phuai007 2010-10-25
  • 打赏
  • 举报
回复

i=0
if (tnRet != null)
{
search[i] = tnRet.Text;
MessageBox.Show(i.ToString());
i++;
}

MessageBox.Show(i.ToString());这句都没有执行到就关闭了
兔子-顾问 2010-10-25
  • 打赏
  • 举报
回复
你如果调试不好就打包放到csdn下载,提供连接,大家帮你试试。
phuai007 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 phil999 的回复:]
是不是winform,开了新线程
[/Quote]

有一个Timer定时器线程
phuai007 2010-10-25
  • 打赏
  • 举报
回复
就是没有异常,单独输出i正常,单独输出 tnRet.Text正常,但是一给数组赋值程序就直接退出了,也没有异常提示

phil999 2010-10-25
  • 打赏
  • 举报
回复
是不是winform,开了新线程
phil999 2010-10-25
  • 打赏
  • 举报
回复
没有异常?
phuai007 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 max_lee_2010 的回复:]
if (i > 0) 执行不到?
try catch一下看看,跟踪下search和i的值,应该有线索的吧
[/Quote]

嗯,不执行下去,有试过去掉search[i] = tnRet.Text;直接打印i,发现i又是正常的,有循环值输出。
断点跟踪 search[i] = tnRet.Text; 发现第一次循环是有获得值的,但是第2次循环真个程序就退出了。最郁闷的是没有任何异常提示,都不知道怎么找问题。
wuyq11 2010-10-25
  • 打赏
  • 举报
回复
加try catch
断点单步跟踪
Max_Lee_2010 2010-10-25
  • 打赏
  • 举报
回复
if (i > 0) 执行不到?
try catch一下看看,跟踪下search和i的值,应该有线索的吧
PitTroll 2010-10-25
  • 打赏
  • 举报
回复
search.Length的值等于0?
phuai007 2010-10-25
  • 打赏
  • 举报
回复
问题应该出在这里:search[i] = tnRet.Text;
将获取到的值写到数组里去,这里有问题,但是又没提示任何错误

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧