问个问题,看下面一小段代码

ergou001 2009-12-03 02:27:46
ProgressBar tdl=new ProgressBar();
tdl.Minimum = 0;
foreach (DataRow row in dt.Rows)
{
tdl.Value += 1;

DataRow newrow = _dgdatas.NewRow(); //定义具有相同结构的新行
newrow[0] = row[0]; //为新行赋值
_dgdatas.Rows.Add(newrow); //将该行添加到行集合中
}

foreach (DataRow row in _dgdatas.Rows) //循环行
{tdl.Value += 1;
....;
....;}

我想问一下tdl.Maxmum 该怎么设置,系统默认是100,有时候就被超出,但是也不想胡乱设置个很大的数,感觉太假,谁能告诉我这该怎么写?能让它默认的为循环次数.或者有其他更好的方法.
...全文
61 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jin20000 2009-12-03
  • 打赏
  • 举报
回复
感觉有点像求某个东西的最大和最小值
jin20000 2009-12-03
  • 打赏
  • 举报
回复
按照你的代码来看,
第一,tdl.value的值应该是 _dgdatas.Rows.count*3
第一次循环完后,tdl.value= _dgdatas.Rows.count,第二次完后就是 _dgdatas.Rows.count*3,第二个循环里面再查询和 _dgdatas没什么关系
另外,我觉得你的这个可以写到一个SQL里面,
ergou001 2009-12-03
  • 打赏
  • 举报
回复
这是那一部分的代码,很多也没法贴.
ergou001 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jin20000 的回复:]
感觉象把之前的数据在COPY一遍,两遍,三遍的感觉,把你的代码贴出来,应该还有更合适的方法
[/Quote]
 private string BindData()
{
tsl.Text = "正在生成记录...";
//tsl.Visible = true;
sb.Items.Add(tsl);
//MessageBox.Show("启动");
sb.Items.Add(tdl);


this.panel1.Controls.Add(sb);
Application.DoEvents();
tdl.Minimum = 0;
tdl.Step = 1;
try
{ _dgdatas.Rows.Clear(); //清除所有行的集合
DataTable dt = dac.ExecuteDataSet(String.Format("select distinct yh from YXMSJLB where {0} order by yh", helper.CurWellClause)).Tables[0];
tdl.Maximum = dt.Rows.Count*2;
//MessageBox.Show(tdl.Maximum.ToString());
foreach (DataRow row in dt.Rows)
{
tdl.Value += 1;

DataRow newrow = _dgdatas.NewRow(); //定义具有相同结构的新行
newrow[0] = row[0]; //为新行赋值
_dgdatas.Rows.Add(newrow); //将该行添加到行集合中
}

foreach (DataRow row in _dgdatas.Rows) //循环行
{
//tdl.PerformStep();
tdl.Value += 1;
dt = dac.ExecuteDataSet(String.Format("SELECT min(qsjs), max(qsjs) from YXMSJLB where {0} and yh = {1}", helper.CurWellClause, row[0])).Tables[0]; //建立连接,执行语句,返回结果
row[1] = String.Format("{0}-{1}", dt.Rows[0][0], dt.Rows[0][1]); //将第一行第一列于第二列的元素值之差付给第二行的元素
}

btnSelect.Enabled = _dgdatas.Rows.Count > 0; //查询结果不为空时,"选择"按钮可用,否则不可用
btnDelete.Enabled = _dgdatas.Rows.Count > 0; //查询结果不为空时,"删除"按钮可用,否则不可用
}
catch (Exception ex)
{
return ex.Message; //抛出异常
}
this.panel1.Controls.Remove(sb);

return null;
}
mowensky 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jin20000 的回复:]
感觉象把之前的数据在COPY一遍,两遍,三遍的感觉,把你的代码贴出来,应该还有更合适的方法
[/Quote]

有点同感。。。
jin20000 2009-12-03
  • 打赏
  • 举报
回复
感觉象把之前的数据在COPY一遍,两遍,三遍的感觉,把你的代码贴出来,应该还有更合适的方法
jin20000 2009-12-03
  • 打赏
  • 举报
回复
我觉得LZ可以说清楚你要做什么,
光看代码确实是mowensky说得就是_dgdatas.Rows.count*2
或者说你的循环都是 in _dgdatas.Rows的,也都是用_dgdatas.Rows.count做基数的
ergou001 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mowensky 的回复:]
按你上面的代码来看是:
tdl.Maxmum = dt.Rows.Count * 2;
[/Quote]
这个对,我怎么没看出来呢,谢谢哈.
ergou001 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mowensky 的回复:]
感觉你写的还真奇怪。。有什么特殊用途么?
[/Quote]
有,就是加载数据的,一个套一个的,但是想弄个进度条,我就弄的不好了.除非最大值设为很大,否则可能超出范围.我就想知道这个控件有没有那种自动默认的设置?
mowensky 2009-12-03
  • 打赏
  • 举报
回复
感觉你写的还真奇怪。。有什么特殊用途么?
mowensky 2009-12-03
  • 打赏
  • 举报
回复
按你上面的代码来看是:
tdl.Maxmum = dt.Rows.Count * 2;
ergou001 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mowensky 的回复:]
tdl.Maxmum = dt.Rows.Count + _dgdatas.Rows.Count;
[/Quote]
但是我上面_dgdatas.Rows.Count是动态的啊,由第一个循环确定的第二个循环的次数.所以没执行循环语句前dt.Rows.Count + _dgdatas.Rows.Count并不是实际的循环次数
mowensky 2009-12-03
  • 打赏
  • 举报
回复
tdl.Maxmum = dt.Rows.Count + _dgdatas.Rows.Count;
mowensky 2009-12-03
  • 打赏
  • 举报
回复
tdl.Maxmum = dt.Rows.Count+ _dgdatas.Rows;

111,120

社区成员

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

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

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