我使用C#Winforms编写了一个用户控件。在用户控件中,我有三个文本框:
进度条表示编号。添加到数据库的记录及其总范围设置为等于txtQuantity。
当一个或多个记录重复时,进度条会停止。
我的问题是:
我如何将其保存到数据库中:
for (long i = from; i < to; i++)
{
for (int j = 0; j < (to - from); j++)
{
arrCardNum[j] = from + j;
string r = arrCardNum[j].ToString();
try
{
sp.SaveCards(r, 2, card_Type_ID, SaveDate, 2);
progressBar1.Value = j;
}
}
}
答案 0 :(得分:8)
试试这个:
private void StartBackgroundWork() {
if (Application.RenderWithVisualStyles)
progressBar.Style = ProgressBarStyle.Marquee;
else {
progressBar.Style = ProgressBarStyle.Continuous;
progressBar.Maximum = 100;
progressBar.Value = 0;
timer.Enabled = true;
}
backgroundWorker.RunWorkerAsync();
}
private void timer_Tick(object sender, EventArgs e) {
progressBar.Value += 5;
if (progressBar.Value > 120)
progressBar.Value = 0;
}
Marquee样式需要启用VisualStyles,但它会不断滚动,无需更新。我将其用于不报告其进度的数据库操作。
答案 1 :(得分:0)
您无法使用循环来执行此操作。在for,while,do ... while循环或定时器中运行代码之间存在差异。在循环中代码立即完成,您无法在计时器中看到这一点。即使您尝试在计数器中放入循环,它也不会起作用:
for(int i=a;i<b;++i)
{
if (cnt < 1000000)
{
IncrProgressBar();
cnt++;
}
else
{
cnt = 0;
}
}
如果要使用进度条执行此操作,则必须输入将数据添加到数据库的计时器OnTick事件代码,并在此事件中增加进度条值。它与更改表单组件的其他属性(Text,Size,...)类似。如果要查看组件的更改,则必须使用计时器。
答案 2 :(得分:0)
要更改值,请使用:
private void timer1_Tick(object sender, EventArgs e)
{
progressBar2.Value = progressBar2.Value - 15;
}
在C#中