求教 datagridview 问题

worena222 2009-11-13 02:28:37
初学 c# 做winform软件时 把库中数据用datagridview显示。并把选中列进行某些数据计算。
于是我把datagridview中第一列改为checkbook。并读取选中行的某单元格中内容。

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{

if ((bool)dataGridView1.Rows[i].Cells[0].FormattedValue == true)
{
arraylist1.Add(i);
}

}

由于可能要选中多个行,我的做法是判断每一列的第一个单元格(checkbook)是否为ture 为真时把行号赋给arr1,从而得到哪些行是被选中的的,但是运行后发现arr中的数据是类似{1,2,3,4,1,2,3,4,5,6,1,2,3,4} 是为什么?
记录的根本不是想要的行号,请教各位有没有什么好的方法实现呀,
得到若干选中列的 dataGridView1.Rows[i].Cells[5].value。用别的方法实现也行,
我是新手请大家说的详细点,谢谢。
...全文
128 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengling2001 2009-11-14
  • 打赏
  • 举报
回复
//鼠标点击单元格的值
DataGridView.HitTestInfo hit = dataGridViewStaInfo.HitTest(e.X, e.Y);
if (hit.Type == DataGridViewHitTestType.Cell)
{
this.textbox1.text = ds.Tables[strTableName].Rows[hit.RowIndex][hit.ColumnIndex].ToString().Trim();

}
如果使用Arraylist,一定注意是不是clear
zhujiazhi 2009-11-14
  • 打赏
  • 举报
回复
你在什么地方写这个代码的,调试一下看看运行几次的

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{

if ((bool)dataGridView1.Rows[i].Cells[0].Value == true)
{
arraylist1.Add(i);
}

}
wadialin 2009-11-14
  • 打赏
  • 举报
回复
是不是遍历前没有清空 ArrayList.Clear()
这代码写再哪里?
Taiyangchen 2009-11-14
  • 打赏
  • 举报
回复
一定要Clear!
worena222 2009-11-13
  • 打赏
  • 举报
回复
调试的时候可以看了下 数字是一次一次加上去的,后面得1 2 3 4出现的很莫名其妙
而且最后 arraylist里的数 居然大于datagridview的行数。。。天啊
大家有没有别的方法实现这功能 通过遍历 加入数组的方法感觉不好写。
xiangchengboy 2009-11-13
  • 打赏
  • 举报
回复
应该是没有清空的原因吧
h_w_king 2009-11-13
  • 打赏
  • 举报
回复

arraylist1.clear(); //是不是没清空?
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{

if ((bool)dataGridView1.Rows[i].Cells[0].FormattedValue == true)
{
arraylist1.Add(i);
}

}
weiletian 2009-11-13
  • 打赏
  • 举报
回复
从你代码来看,似乎不应该出现那种情况哦。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧