C#其他信息: 索引超出了数组界限。

private void button1_Click(object sender, EventArgs e)
    {
        string str = richTextBox1.Text;
        string[] lines = str.Split(Environment.NewLine.ToCharArray());
        for (int i = 1; i < lines.Length; i++)
        {
            Console.WriteLine(lines[i]);
            string[] linecell = lines[i].Split(new char[] { ',' });
            if (linecell.Length > 2) { richTextBox2.Text = richTextBox2.Text + "\r\n" + linecell[2]; } //读取出身份证号码
            string aaa = AES.AESEncrypt(richTextBox2.Text);
            richTextBox2.Text = aaa + "\r\n";
            //对身份证号码进行加密   
        }
    }
            其实string aaa = AES.AESEncrypt(richTextBox2.Text);应该是string aaa = AES.AESEncrypt(linecell[2]); 但是提示我其他信息: 索引超出了数组界限。
            该怎么改。。

你最后应该是 richTextBox2.Text = richTextBox2.Text + aaa + "\r\n";

在编程语言里,起始编号大都是从0开始的,而你从1开始的,会出现索引越界错误的

private void button1_Click(object sender, EventArgs e)
{
string str = richTextBox1.Text;
string[] lines = str.Split(Environment.NewLine.ToCharArray());
for (int i = 0; i < lines.Length; i++) //**这里索引从0开始就行了**
{
Console.WriteLine(lines[i]);
string[] linecell = lines[i].Split(new char[] { ',' });
if (linecell.Length > 2) { richTextBox2.Text = richTextBox2.Text + "\r\n" + linecell[2]; } //读取出身份证号码
string aaa = AES.AESEncrypt(richTextBox2.Text);
richTextBox2.Text = aaa + "\r\n";
//对身份证号码进行加密

}
}

private void button1_Click(object sender, EventArgs e)
{
string str = richTextBox1.Text;
string[] lines = str.Split(Environment.NewLine.ToCharArray());
for (int i = 0; i < lines.Length; i++)
{
Console.WriteLine(lines[i]);
string[] linecell = lines[i].Split(new char[] { ',' });
if (linecell.Length > 2) { richTextBox2.Text = richTextBox2.Text + "\r\n" + linecell[2]; } //读取出身份证号码
string aaa = AES.AESEncrypt(richTextBox2.Text);
richTextBox2.Text = aaa + "\r\n";
//对身份证号码进行加密

}
}

 if (linecell.Length > 2) { richTextBox2.Text = richTextBox2.Text + "\r\n" + linecell[2]; } //读取出身份证号码


 string aaa = AES.AESEncrypt(linecell[2]);

在 判断 的外面

linecell 的 item的数量可能少于3个
这里的 linecell[2] 超出了边界,

 private void button1_Click(object sender, EventArgs e)
        {
            string str = richTextBox1.Text;
            string[] lines = str.Split(Environment.NewLine.ToCharArray());

            for (int i = 1; i < lines.Length; i++)  // 至少要有 2个才会执行下面的代码
            {

                Console.WriteLine(lines[i]);
                string[] linecell = lines[i].Split(new char[] { ',' });
                if (linecell.Length > 2)  //最少有3个元素   linecell[2] 就是第3个元素
                {
                    richTextBox2.Text = richTextBox2.Text + "\r\n" + linecell[2];
                    string aaa = AES.AESEncrypt(linecell[2]);
                    richTextBox2.Text = aaa + "\r\n";
                }
                else
                {
                    //当少于3个的情景
                }

                //另外 我看了下, 就算用你的代码,也不应该报告下标超出范围啊
            }

        }

你的代码也不应该出问题啊!

如果没有 string aaa = AES.AESEncrypt(linecell[2]); richTextBox2.Text = aaa + "\r\n"; 这两句话,图片说明这显示结果没错,但是一加,成你说的那样,图片说明成这样了,完全不是想要的结果啊,我想要的上把图一里面的身份证都加密了

linecell[2]
这是取linecell数组的第三个元素,那么你的本意是要取第三个元素吗?