如何以 MB 为单位显示长单位,并在进度条中显示进度百分比

本文关键字:显示 百分比 单位 MB 为单位 | 更新日期: 2023-09-27 17:56:43

我有这一行:

backgroundWorker1.ReportProgress((int)obj.BytesSent);

BytesSent 是一个长变量。我需要将其投射到 (int) 来报告它。

现在在backgorund1进度更改事件中,我想将其显示为MB。例如 0.3MB 0.7MB 33MB 而不是显示字节。

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            toolStripStatusLabel2.Text = e.ProgressPercentage.ToString();
        }
  1. 如何将其显示为 MB 而不是字节?

  2. 如何计算并在进度更改事件中将 e.进度百分比显示为进度栏中的百分比?从 0 到 100,具体取决于事件的进度:

    私有无效videosInsertRequest_ProgressChanged(IUploadProgress obj) {

            toolStripStatusLabel1.Text = obj.Status.ToString();
            backgroundWorker1.ReportProgress((int)obj.BytesSent);
    }
    

我还想显示发送了多少 MB,并在进度条中以百分比显示进度。

如何以 MB 为单位显示长单位,并在进度条中显示进度百分比

如何将其显示为 MB 而不是字节?

如果你每 10 位移一个数字,你所做的大小将大一个单位,所以10是 Kb,20是 Mb,30是字节,依此类推。因此,如果您将数字除以 1 << 20则将除以兆字节为单位的字节数,从而得出以兆字节为单位的总字节数。

double mbSent = ((double)obj.BytesSent) / (1 << 20);

我首先将 BytesSent 转换为double,这样我们就不会得到整数除法。

我如何计算并在进度更改事件中将 e.进度百分比显示为进度栏中的百分比。

为此,只需将字节发送除以字节总数,然后乘以 100。

double percentComplete = ((double)obj.BytesSent) / totalBytes * 100;

然后,您可以将完成百分比分配给进度条的值。

要以 MB 为单位显示大小,您应该以 B 为单位显示大小并将其除以 1024^2。要以百分比显示进度,您必须将下载的部分的大小除以文件大小。