Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在更新标签文本和进度条文本和值时,值和文本不相同?_C#_.net_Winforms - Fatal编程技术网

C# 为什么在更新标签文本和进度条文本和值时,值和文本不相同?

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

标签从100开始,但在1结束,而不是在0结束。也许以1结尾就可以了

progressBar达到了99%也许计算百分比时出了问题

我想做的是:

  • 显示从中下载的邮件数。例如4035/4035,当它启动时,右边的4035将倒计时到0

  • 将progrssBar设置为100%作为文本和值。但是它达到了98%,我在进度条上看到了98%的文本,而且值还没有结束

  • 这是我的密码。在form1构造函数中:

    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());
            }