C#Win窗口程序 dataGridView控件有关问题

C#Win窗口程序 dataGridView控件问题

开发环境:
Windows8.1,VS2010,   .net4.0

这是将dataGridView控件的数据导出到txt文件中。
遍历到最后一个单元格时,就判定为空,跳出循环,但是实际是有值得



/*代码段1*/
 if (dlg.ShowDialog() == DialogResult.OK)
            {
              //  FileStream fileStream = new FileStream(dlg.FileName, FileMode.OpenOrCreate);
                StreamWriter sf = new StreamWriter(dlg.FileName, true);

                try
                {
                    /*写入列标题*/
                    sf.WriteLine(this.dataGridView1.Columns[0].HeaderText + "\t\t" + this.dataGridView1.Columns[1].HeaderText + "\t\t" + this.dataGridView1.Columns[2].HeaderText);
                   // sf.WriteLine("\n");
                    /*写入数据*/
                    for (int i = 0; i <this.dataGridView1.Rows.Count; i++)//遍历行
                    {
                       // strBuilder = new StringBuilder();
                        for (int j = 0; j<3; j++)//遍历列
                        {
                            if (this.dataGridView1.Rows[i].Cells[j].Value!= null)//最后一个单元格读不出来,实际有值
                            {
                                str = this.dataGridView1.Rows[i].Cells[j].Value.ToString();
                                sf.Write(str+"\t\t");
                            }
                            else
                            {
                                break;
                            }
                        }
                        sf.WriteLine("\n");
                    }
                    sf.Dispose(); //释放资源
                    sf.Close(); //关闭数据流
                }


/*代码段2*/
 public Form1()
        {
            InitializeComponent();//初始化dataGridView
            for (int i = 0; i < 25;i++ )//初始化表的行数为25行
            {
                dataGridView1.Rows.Add();   
            }
            //屏蔽4,5,6列输入
            dataGridView1.Columns[3].ReadOnly = true;
            dataGridView1.Columns[4].ReadOnly = true;
            dataGridView1.Columns[5].ReadOnly = true;
            dataGridView1.Columns[6].ReadOnly = true;
            /*for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (i % 2 != 0)
                {
                    dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.BlueViolet;
                }
            }*/
        }
------解决思路----------------------
代码不会有问题,你断点看看dataGridView1.Rows[i].Cells[j].Value值是什么,i和j的值是否指向最后单元格
------解决思路----------------------
是不是你最后一个单元格,本来就存在空值的情况?
如果是这样的话,你试试先把读取的那个文件排序一下,把有值的先放到第一行试试看
------解决思路----------------------
用dataGridView1.Rows[i].Cells[j].EditedFormatedValue或者dataGridView1.Rows[i].Cells[j].FormatedValue试试。