c# 从文本文件读指定数据并显示到textbox。该怎么处理

c# 从文本文件读指定数据并显示到textbox。
文本地址:d:\1.txt

文本内容:
aaaaa
12345  k
     aaa bbb ccc ddd eee
ggg

目标:将有“12345”行的下一行的第四组数输入到textbox1。

我的代码:
      private void b1_Click(object sender, EventArgs e)   //按查询键 
        {
           string[] str1 = File.ReadAllLines(@"d:\1.txt");                                        //读文件到str1
          int f=0;int a=0;string st1=" ";                                                                        
            while (f < 1)                                                                                                 //找到“12345”后终止循环
            {
                if (str1[a].Contains("12345")) f = f + 1;       
                if (str1[a].Contains("12345"))                                                              
                    st1 = str1[a+1];                                                                                   //将“12345”的下一行写入st1
                    for (int x = 0; x < 4; x++) { st1 = st1.Replace("  ", " "); }
                    st1 = st1.Trim() ;                                                                                 //清除多余空格
                    string[] str2=st1.Split(' ');                                                                   //将字符串st1转化为数组str2
                    textBox1.Text = str2[3];                                                                      //将str2的第三组数写入txtbox1
                    a = a + 1;
            }
       }
我的错误提示:
索引超出了数组界限   textBox1.Text = str2[0]; 是能看到第一组数“aaa",改成str2[1]的时候就报错了。
string st2=st1.substring(1)的时候也报错。
------解决思路----------------------
StreamReader sr = new StreamReader(@"d:\1.txt", Encoding.Default);
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                if (line.Contains("12345"))
                {
                    string s = sr.ReadLine();
                    string[] sline = s.Trim().Split(' ');
                    textBox1.Text = sline[3];
                }
               
               
            }
------解决思路----------------------
你这个是字符串错误了

我看你的代码是12345作为硬性判断
我来写的话就是
string str=@"aaaaa
12345  k
     aaa bbb ccc ddd eee
ggg";
var arr=str.Split("\r");
if(arr.Length>=3)
{
     arr = Regex.Split(arr[2].Trim(),"\\s");
     if(arr.Length>=4)
     {
             Console.WriteLine(arr[3]);//你要的位置
     }
}

------解决思路----------------------
using(StreamReader sr = new StreamReader(@"d:\1.txt", Encoding.Default))
{
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                if (line.Contains("12345"))
                {
                    string s = sr.ReadLine();
                    string[] sline = s.Trim().Split(' ');
                    textBox1.Text = sline[3];
                    break;
                }
               }
            }

------解决思路----------------------
按照2楼那样就行了。
你在这里:
 for (int x = 0; x < 4; x++) { st1 = st1.Replace("  ", " "); }
                     st1 = st1.Trim() ;                                                                                 //清除多余空格
                    string[] str2=st1.Split(' ');                                                                   //将字符串st1转化为数组str2

思路有点乱。你可以设置断点后 跟踪下str2的内容。