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试试。
开发环境:
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试试。