//查找关键字
                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);
                }
为什么循环完毕以后,整个程序就自动关闭了?也没任何异常提示

解决方案 »

  1.   

    问题应该出在这里:search[i] = tnRet.Text;
    将获取到的值写到数组里去,这里有问题,但是又没提示任何错误
      

  2.   

    if (i > 0) 执行不到?
    try catch一下看看,跟踪下search和i的值,应该有线索的吧
      

  3.   

    加try catch
    断点单步跟踪
      

  4.   


    嗯,不执行下去,有试过去掉search[i] = tnRet.Text;直接打印i,发现i又是正常的,有循环值输出。
    断点跟踪 search[i] = tnRet.Text; 发现第一次循环是有获得值的,但是第2次循环真个程序就退出了。最郁闷的是没有任何异常提示,都不知道怎么找问题。
      

  5.   

    就是没有异常,单独输出i正常,单独输出 tnRet.Text正常,但是一给数组赋值程序就直接退出了,也没有异常提示
      

  6.   

    你如果调试不好就打包放到csdn下载,提供连接,大家帮你试试。
      

  7.   


    i=0
    if (tnRet != null)
    {
    search[i] = tnRet.Text;
    MessageBox.Show(i.ToString());
    i++;
    }MessageBox.Show(i.ToString());这句都没有执行到就关闭了
      

  8.   

    String [] search = null;
    search怎么是null
      

  9.   

    因为搜索结果不定,所以数组的个数不定完整代码:
            //影片搜索
            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("测试有无执行");这句都无输出。
      

  10.   

    汗,哥哥,你还是改用 List<string> 吧,数组不是这样用的
      

  11.   

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