WinSCP更新C#进度条

时间:2015-04-21 08:25:06

标签: c# progress-bar winscp winscp-net

我在知道在C#中使用WinSCP .NET程序集触发FileTransferProgressEventArgs事件时发送的文件百分比时遇到问题。

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

我增加进度条的方法如下

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

我认为它可以提供e.FileProgresse.CPS,但似乎我错过了一些东西。

1 个答案:

答案 0 :(得分:1)

问题是,您将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。