我有这一行:
backgroundWorker1.ReportProgress((int)obj.BytesSent);
BytesSent是一个很长的变种。 我需要将它转换为(int)来报告它。
现在在backgorund1 progresschanged事件中我想将其显示为MB。 例如0.3MB 0.7MB 33MB而不是显示字节。
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
toolStripStatusLabel2.Text = e.ProgressPercentage.ToString();
}
如何将其显示为MB而非字节?
我如何计算并在ProgressChanged事件中显示e.ProgressPercentages为progressBar中的百分比?从0到100,取决于事件的进展:
private void videosInsertRequest_ProgressChanged(IUploadProgress obj) {
toolStripStatusLabel1.Text = obj.Status.ToString();
backgroundWorker1.ReportProgress((int)obj.BytesSent);
}
我想要显示已发送的MB数量,并显示progressBar中百分比的进度。
答案 0 :(得分:0)
要以MB为单位显示大小,您应该在B中取大小并将其除以1024 ^ 2。要显示百分比的进度,您必须获取已下载部分的大小,并将其除以文件大小。
答案 1 :(得分:0)
如何将其显示为MB而不是字节?
如果您每隔10位移位一个数字,那么您的单位尺寸会更大,因此10
为Kb,20
为Mb,30
为字节,依此类推。因此,如果您将数字除以1 << 20
,您将除以兆字节中的字节数,以兆字节为单位。
double mbSent = ((double)obj.BytesSent) / (1 << 20);
我首先将BytesSent转换为double
,因此我们不会得到整数除法。
我如何计算并在ProgressChanged事件中显示e.ProgressPercentages为progressBar中的百分比。
为此,只需将BytesSent除以总字节数再乘以100即可。
double percentComplete = ((double)obj.BytesSent) / totalBytes * 100;
然后,您可以将percentComplete分配给进度条的值。