C# 为什么在更新标签文本和进度条文本和值时,值和文本不相同?
标签从100开始,但在1结束,而不是在0结束。也许以1结尾就可以了 progressBar达到了99%也许计算百分比时出了问题 我想做的是:C# 为什么在更新标签文本和进度条文本和值时,值和文本不相同?,c#,.net,winforms,C#,.net,Winforms,标签从100开始,但在1结束,而不是在0结束。也许以1结尾就可以了 progressBar达到了99%也许计算百分比时出了问题 我想做的是: 显示从中下载的邮件数。例如4035/4035,当它启动时,右边的4035将倒计时到0 将progrssBar设置为100%作为文本和值。但是它达到了98%,我在进度条上看到了98%的文本,而且值还没有结束 这是我的密码。在form1构造函数中: label8.Visible = false; pbt.Size = new Size(216, 10); pb
label8.Visible = false;
pbt.Size = new Size(216, 10);
pbt.Location = new Point(8, 312);
groupBox1.Controls.Add(pbt);
backgroundWorker1.RunWorkerAsync();
pbt.Text = "0%";
在backgroundworker嫁妆事件中
private int numberofallmessages = 0;
private int countMsg = 0;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
OpenPop.Pop3.Pop3Client PopClient = new OpenPop.Pop3.Pop3Client();
PopClient.Connect("mail.bezeqint.net", 110, false);
PopClient.Authenticate("xxxx", "yyyy",
OpenPop.Pop3.AuthenticationMethod.UsernameAndPassword);
int messageCount = 100;//PopClient.GetMessageCount();
numberofallmessages = messageCount;
allMessages = new List<OpenPop.Mime.Message>(messageCount);
for (int i = messageCount; i > 0; i--)
{
if (backgroundWorker1.CancellationPending == true)
{
e.Cancel = true;
return;
}
allMessages.Add(PopClient.GetMessage(i));
int nProgress = (messageCount - i) * 100 / messageCount;
backgroundWorker1.ReportProgress(nProgress, PopClient.GetMessageCount().ToString() + "/" + i);
}
PopClient.Disconnect();
}
messageCount我在dowork事件中将其设置为100只是为了测试,因为有4000多条消息,但为了测试,我将其更改为100
这是我在运行程序时看到的屏幕截图,它即将结束:
在左侧,您可以看到标签下载电子邮件:和查看4540/1
4540是1,是我改为100的计数器,用于测试,所以它从100开始,停在1
在进度条下,文本为98%,值也为98,而不是100。Try
intnprogress=(messageCount-i+1)*100/messageCount代码>可能也想从代码中删除您的用户名和密码。。。
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
pbt.Value = e.ProgressPercentage;
pbt.Text = e.ProgressPercentage.ToString() + "%";
label8.Text = e.UserState.ToString();
label8.Visible = true;
lstMail.Items.Add(countMsg.ToString());
}