WinSCP更新C#进度条

WinSCP update C# progress bar

在使用 C# 中的 WinSCP .NET 程序集触发 FileTransferProgressEventArgs 事件时,我无法了解发送文件的百分比。

FileProgress returns 只有 01 ,或者文档说的 (0-1) 我不明白。我需要知道发送了多少字节的文件,但不是我不明白的 0,1。我知道 CPS 是每秒字节数,但我需要更多变量。

我增加进度条的方法如下 void

SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
{
    progressBar.Increment((int)e.FileProgress);
} 

它的 e.FileProgresse.CPS 我认为可以提供帮助,但似乎我遗漏了什么。

问题是,您将 e.FileProgress 转换为 int。正如您已经说过的,文档指定 e.FileProgress 的值范围从 0 到 1,例如 0.55。如果将此值转换为整数,则会丢失所有小数位。所以结果值为 0。 要解决此问题,您可以将 e.FileProgress 乘以 100 将其转换为百分比值。因此您得到的值范围为 0 到 100。因此您可以像这样实现事件处理程序:

void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e) 
{
    progressBar.Value = (int)(e.FileProgress * 100);
}

您只需确保进度条的 MinimumMaximum 属性设置为默认值 0 和 100。